雖然哈斯克爾社會的普遍看法似乎是,它總是更好地使用Text
代替String
,事實上,大部分維持圖書館的仍是API是String
取向混淆了地獄的我。另一方面,存在notable projects,它們將String
視爲一個錯誤,並提供Prelude
所有面向String
函數的實例都被它們的Text
計數器替換。Data.Text VS字符串
那麼除了向後兼容的標準Prelude兼容性和「開關製造間接」以外,還有什麼原因讓人們繼續編寫String
-oriented API? 與String
相比,Text
有沒有其他缺點?
特別是,我對此感興趣,因爲我正在設計一個庫並試圖決定使用哪種類型來表示錯誤消息。
支持兩者有多難? –
字符串很容易使用,但文本效率很高。 我說,效率是一個編譯器問題,因爲它的編譯器工作要優化。讓程序員寫一個更快的庫只是意味着編譯器不夠好。 (可悲的是,我們沒有很好的編譯器) – Vektorweg
@Vektorweg我會爭辯。由於'String'只是一個Char列表的別名,因此它與'Text'的單片數據具有不同的性能特徵是很自然的。這兩種類型完全沒有編譯器的關注,因爲它們不是原始的,並且在庫中定義。 –