文字列型の使い分け
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.]