Data.Text的好处

时间:2014-03-24 08:37:10

标签: string haskell

通过Haskell的本机字符串函数导入Data.Text有什么好处?

ghci$> drop 3 "abcdefg"
     > "defg"
ghci$> import qualified Data.Text as T
     > T.drop 3 $ T.pack "abcdefg" 
     > "defg"

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

1 个答案:

答案 0 :(得分:4)

Data.Text更节省空间。 Haskell的本地String相当于Char的链接列表,这意味着即使是中等大小的文本块,它也有很高的空间开销。

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

最后,Data.Text提供了一些特定于文本的功能,这些功能在本地String中不易提供。例如,各种case-folding和substring相关的函数。虽然可以提供适用于String的变体,但由于Text版本随时可用,因此没有动力这样做。