Personal tools


From HaskellWiki

Revision as of 20:38, 2 March 2014 by Benmachine (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

This article is a stub. You can help by expanding it.

There are several types of strings that can be used in Haskell programs.


1 String

is the only string type mandated by the language standard, and as such is overwhelmingly the most common, especially for non-performance-sensitive applications. It is simply a type synonym for


  • conceptually simple and easy to use
  • interfaces well with other list functions


  • massive overhead, up to 4 words per character, which also has speed implications
  • not pedantically Unicode-correct in some cases (e.g. there are strings which change length when changing case, so
    map toLower
    is not accurate in that case)

2 ByteString

is a type defined in the package bytestring, available from Hackage.

Bytestrings are sequences of bytes not characters, and aren't really a text type at all. They are best used for binary data.

They are low-overhead in space terms and very heavily optimised – they are a key part of writing high-performance code in Haskell.

2.1 Data.ByteString.Char8


3 Text

For a more efficient processing of text, there is
, defined in the package text. There are two version of
s: lazy and strict.

3.1 Lazy Text


3.2 Strict Text


4 Links

  • string-conversions; this package provides a simple type class for converting values of different string types into values of other string types.