Strings
This article is a stub. You can help by expanding it.
There are several types of strings that can be used in Haskell programs.
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)
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.
Data.ByteString.Char8
TODO
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.
Lazy Text
TODO
Strict Text
TODO
Links
- string-conversions; this package provides a simple type class for converting values of different string types into values of other string types.
- convertible-text, a text conversion package (depricated)