[Haskell-cafe] Strings in Haskell

Spencer Janssen sjanssen at cse.unl.edu
Mon Jan 22 20:40:00 EST 2007

On Jan 22, 2007, at 7:18 PM, Alexy Khrabrov wrote:
> Greetings -- I'm looking at several FP languages for data mining, and
> was annoyed to learn that Erlang represents each character as 8 BYTES
> in a string which is just a list of characters.  Now I'm reading a
> Haskell book which states the same.

The standard string type in Haskell is indeed a linked list of  
characters, with about 12 bytes of overhead per character.

> Is there a more efficient Haskell string-handling method?

Yes!  There is a library called Data.ByteString [1], it is included  
with the latest versions of GHC and Hugs, and is also available as a  
standalone package.  Data.ByteString represents strings as packed  
arrays of bytes, so the overhead is about 1 byte per character.  This  
library exhibits fantastic performance, rivaling C's speed while  
maintaining the elegance of Haskell.

Spencer Janssen

[1] http://www.cse.unsw.edu.au/~dons/fps.html

More information about the Haskell-Cafe mailing list