ByteString型
バイト列
1byteで済むので、その分Textよりメモリ効率が良い
docs
matrix
table: ByteStringの7種類
正格 遅延
バイナリ Data.ByteString Data.ByteString.Lazy
文字列 Data.ByteString.Char8 Data.ByteString.Lazy.Char8
eUTF-8 Data.ByteString.UTF8 Data.ByteString.Lazy.UTF8 上段のChar8のやつのサブセット的な
メモリ効率がいい(?) Data.ByteString.Short
docsと3行
バイナリ
Data.ByteString
Strict
byte列の配列
Data.ByteString.Lazy
Lazy
64kbのChunkに保存される
Chunk単位で評価される
64kbのData.ByteStrringのListのイメージ
Data.ByteString.Lazy.Internal
文字列
Data.ByteString.Char8
Strict
Data.ByteString.Lazy.Char8
Lazy
eUTF-8
Data.ByteString.UTF8
Strict
Data.ByteString.Lazy.UTF8
Lazy
メモリ効率がいい(?)
Data.ByteString.Short
使用用途
ファイルの読み込み時
etc.
Data.ByteStringとData.ByteString.Char8とData.ByteString.UTF8は全て同じ型(Lazy版も同様)
https://qiita.com/satosystems/items/e07e9907e4da9ab853fc
コメント
https://kazu-yamamoto.hatenablog.jp/entry/20110525/1306298046
ByteString型#611fd46c1982700000015c2aとか間違ってるかもしれないので直すmrsekut.icon
sliceできる
https://qiita.com/mod_poppo/items/740659702f31216fdade#バイト文字列
https://kazu-yamamoto.hatenablog.jp/entry/20140114/1389683220
ByteStringと表示されている型にも複数種類あるのね..mrsekut.icon
IDEのhintでByteStringと表示されているもの同士も、出自が違えば同じものとして扱えない
Data.ByteString.Lazy.Internalとかなんなん
普通に使う分にはいいんですが、短い文字列をたくさん作るとすぐにメモリが断片化することがよく知られています ref
#??
Codec.Binary.UTF8.Stringはなに?
https://hackage.haskell.org/package/utf8-string-1.0.2/docs/Codec-Binary-UTF8-String.html
utf8-string
http://www.nct9.ne.jp/m_hiroi/func/haskell20.html