文字列型の使い分け
Stringは[Char]のエイリアスであり、
文字列を表現するために使われますが、
非常に非効率的です。
さらにshowで表示したときに日本語を含むマルチバイト文字列がエスケープされます。
昔からある型のため仕方なく使われていますが、
なるべくTextを使ってください。
TextはUnicode文字列を効率的に扱える型です。
基本的にはText.LazyではなくStrictなTextを優先して使ってください。
ByteStringとの使い分けは、
Unicodeで正しく表現できる文字列の場合はTextを使い、
バイナリデータやエンコードが不明なデータ、
非Unicodeでやり取りされるネットワーク上の文字列データなどはByteStringを使います。
Stringは古くから使われているためライブラリに蔓延しているだけです。
ライブラリが関係するときだけ使い、
そのデータを長く使う場合はTextに変換するべきです。
詳しく知りたい場合は、 [Haskellの文字列型: 分類と特徴 - Qiita](h
[Description truncada. Veja o README completo no GitHub.]