generated at
文字列
String = [Char]

リストにCharを突っ込んだだけ。GCへの負担も大きくパフォーマンス面では悲惨としか言いようがないが、よく使われている。
標準ライブラリにリスト操作が充実していることもあり、おもちゃとしては使いやすい。

ByteString

連続したメモリ領域へのポインタで、実質的にはWord8の配列。
OverloadedStringsでマルチバイト文字列を書いても期待通りにはならない
OverloadedStringsでマルチバイト文字列を書いても期待通りにはならない(大事なことなので2回)。

fast-buildermasonなどのビルダーを使うことで効率よく構築できる。

Lazy ByteString

実質的にはByteStringの線形リストで、あまりおすすめはしないが遅延IOに使える。Data.ByteString.Builderを使うと、直接繋ぎ合わせるよりはかなり効率的に構築できる。


GHCのByteArray#を使った表現で、最もGCへの負荷が低く、compact regionsにも格納できる。しかし、結局ByteStringに変換する必要があるため、使いこなすのが難しい


Unicode文字の配列。検索、置換からエンコード・デコードまで操作が充実している。Stringの代わりとして最も無難な表現。


バイト列の小片をFingerTreeで繋ぎ合わせた構造。テキストエディタのように、連結や切断が必要なケースでは強力。