Data.Text 的好处

Abr*_*m P 4 string haskell

在 Haskell 的原生字符串函数上导入 Data.Text 有什么好处?

ghci$> drop 3 "abcdefg"
     > "defg"
ghci$> import qualified Data.Text as T
     > T.drop 3 $ T.pack "abcdefg" 
     > "defg"
Run Code Online (Sandbox Code Playgroud)

等等。 Data.Text 提供的许多其他方法(如果不是全部)由标准库提供。此外,要将字符串与 Data.Text 一起使用,我必须将字符串打包/解压缩为文本。为什么我要使用 Data.Text?

Joh*_*n L 5

Data.Text更节省空间。Haskell 的原生String相当于Chars的链表,这意味着即使是中等大小的文本块,它也具有非常高的空间开销。

Data.Text通常比String. 因为String是链表,而Text是内存数组(或惰性变体中的多个内存数组),所以它提供了更好的内存局部性。 Text通常可以比Strings更有效地与本地系统库(例如 IO)交互,后者需要通过中间缓冲区。对于执行大量 IO(读/写文件)的程序,加速可以是一个数量级或更多。

最后,Data.Text提供了一些在 native 中不容易获得的特定于文本的函数String。例如,各种大小写折叠和子字符串相关的功能。虽然String当然可以提供适用于s的这些变体,但由于这些Text版本随时可用,因此几乎没有动力这样做。