Personal tools

Strings

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
(Initial page (stub))
 
 
Line 1: Line 1:
 
{{Stub}}
 
{{Stub}}
[[Category:Tutorials]]
 
   
 
There are several types of strings that can be used in Haskell programs.
 
There are several types of strings that can be used in Haskell programs.
   
== Strings ==
+
== String ==
   
<hask>String</hask> is the standard string type in Haskell; it is the same as <hask>[Char]</hask>. Strings are in Unicode.
+
<hask>String</hask> 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 <hask>[Char]</hask>.
   
  +
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 <hask>map toLower</hask> is not accurate in that case)
   
 
== ByteString ==
 
== ByteString ==
Line 13: Line 19:
 
<hask>ByteString</hask> is a type defined in the package [http://hackage.haskell.org/package/bytestring bytestring], available from Hackage.
 
<hask>ByteString</hask> is a type defined in the package [http://hackage.haskell.org/package/bytestring bytestring], available from Hackage.
   
There are two version of <hask>ByteString</hask>s: lazy and strict.
+
Bytestrings are sequences of ''bytes'' not characters, and aren't really a text type at all. They are best used for binary data.
 
 
=== Lazy ByteString ===
 
 
TODO
 
 
 
=== Strict ByteString ===
 
 
TODO
 
   
  +
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 ===
 
=== Data.ByteString.Char8 ===
   
 
TODO
 
TODO
 
   
 
== Text ==
 
== Text ==

Latest revision as of 20:38, 2 March 2014

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

[edit] 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)

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

[edit] 2.1 Data.ByteString.Char8

TODO

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


[edit] 3.1 Lazy Text

TODO


[edit] 3.2 Strict Text

TODO


[edit] 4 Links

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