虽然哈斯克尔社会的普遍看法似乎是,它总是更好地使用Text
代替String
,事实上,大部分维持图书馆的仍是API是String
取向混淆了地狱的我。另一方面,存在notable projects,它们将String
视为一个错误,并提供Prelude
所有面向String
函数的实例都被它们的Text
计数器替换。Data.Text VS字符串
那么除了向后兼容的标准Prelude兼容性和“开关制造间接”以外,还有什么原因让人们继续编写String
-oriented API? 与String
相比,Text
有没有其他缺点?
特别是,我对此感兴趣,因为我正在设计一个库并试图决定使用哪种类型来表示错误消息。
支持两者有多难? –
字符串很容易使用,但文本效率很高。 我说,效率是一个编译器问题,因为它的编译器工作要优化。让程序员写一个更快的库只是意味着编译器不够好。 (可悲的是,我们没有很好的编译器) – Vektorweg
@Vektorweg我会争辩。由于'String'只是一个Char列表的别名,因此它与'Text'的单片数据具有不同的性能特征是很自然的。这两种类型完全没有编译器的关注,因为它们不是原始的,并且在库中定义。 –