Data.ByteString (formerly FPS) provides packed strings (byte arrays held by a ForeignPtr), along with a list interface to these strings. It lets you do extremely fast IO in Haskell; in some cases, even faster than typical C implementations, and much faster than [Char]. It uses a flexible "foreign pointer" representation, allowing the transparent use of Haskell or C code to manipulate the strings. Data.ByteString is written in Haskell98 + the foreign function interface and cpp. It has been tested successfully with GHC 6.4 and 6.5, and hugs March 2005. WWW: http://www.cse.unsw.edu.au/~dons/fps.html