|Haskell Performance Resource|
Sometimes the cost of representing strings as lists of Char can be too much. In this case, you can instead use packed strings. There are a number of options:
* The standard Data.PackedString type * One of the newer packed string libraries, for example FastPackedString * Unboxed arrays of Word8 or Char * Ptrs to foreign malloced Word8 buffers
The packed string libraries have the benefit over arrays of Word8 or Char types, in that the provide the usual list-like operations.