我現在在教自己的Haskell,我想知道在Haskell中使用字符串時最佳做法是什麼。Haskell中有效的字符串實現
Haskell中的默認字符串實現是Char的列表。根據Real World Haskell,由於每個字符都是分開分配的(我假設這意味着一個字符串基本上是Haskell中的一個鏈表,但我不確定),所以這對於文件輸入輸出而言是低效的。
但是,如果缺省的字符串實現對於文件I/O來說是低效的,在內存中使用字符串的效率是否也是低效的?爲什麼或者爲什麼不? C使用一個char數組來表示一個String,並且我認爲這將是在大多數語言中做事的默認方式。
正如我所看到的,String的列表實現將佔用更多的內存,因爲每個字符都需要開銷,並且還需要更多時間來迭代,因爲需要指針取消引用來獲取下一個字符。但我很喜歡和Haskell一起玩,所以我想相信默認實現是有效的。
對於小字符串以及想要對其執行的常見操作,默認實現是最方便使用的。對於想要基本上視爲字節塊的大型字符串,效率不高;使用Data.ByteString或Data.ByteString.Lazy – ShreevatsaR 2009-02-23 03:02:27