Personal tools

Strings

From HaskellWiki

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.

Contents

1 String

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
[Char]
.

Pros:

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

Cons:

  • 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

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

TODO

3 Text

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


3.1 Lazy Text

TODO


3.2 Strict Text

TODO


4 Links

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