Haskell文本包选择

Mat*_*hid 7 unicode haskell

回到白天,每个人都习惯用文字处理String.但是后来有些人指出这实际上是非常非常低效的,并且ByteString包装诞生了.

ByteString非常适合处理二进制数据.但很快人们就指出这ByteString.Char8实际上是一个巨大的问题,你真正想要的是对外部数据进行真正的 Unicode处理.有了它,用于处理打包的Unicode字符串的大约30个类似但不兼容的Haskell包诞生了.并且他们都没有真正获得任何牵引力,因为......好吧,三十太多了!

我的问题:这个问题已修复了吗?换句话说,社区是否已经选择了一个包来完成这项工作?如果是这样,那是哪一个?

Chr*_*lor 11

我相信目前的黄金标准是Data.Text,您可以安装它

$ cabal install text
Run Code Online (Sandbox Code Playgroud)

你应该导入哪个合格的

import qualified Data.Text as T
Run Code Online (Sandbox Code Playgroud)

Text可以通过显式转换来创建代码中的值String,如

>> let str = T.pack "Hello, world"
Run Code Online (Sandbox Code Playgroud)

或者使用OverloadedStrings语言扩展名

>> :set -XOverloadedStrings
>> let str = "Hello, world" :: Text
Run Code Online (Sandbox Code Playgroud)