文字列
String = [Char]
リストにCharを突っ込んだだけ。GCへの負担も大きくパフォーマンス面では悲惨としか言いようがないが、よく使われている。
標準ライブラリにリスト操作が充実していることもあり、おもちゃとしては使いやすい。
ByteString
連続したメモリ領域へのポインタで、実質的にはWord8の配列。
OverloadedStringsでマルチバイト文字列を書いても期待通りにはならない。
OverloadedStringsでマルチバイト文字列を書いても期待通りにはならない(大事なことなので2回)。
Lazy ByteString
実質的にはByteStringの線形リストで、あまりおすすめはしないが遅延IOに使える。Data.ByteString.Builderを使うと、直接繋ぎ合わせるよりはかなり効率的に構築できる。
Unicode文字の配列。検索、置換からエンコード・デコードまで操作が充実している。Stringの代わりとして最も無難な表現。
バイト列の小片をFingerTreeで繋ぎ合わせた構造。テキストエディタのように、連結や切断が必要なケースでは強力。