我目前正在自学Haskell,想知道在Haskell中处理字符串的最佳实践是什么。
Haskell中默认的字符串实现是Char列表。根据Real World Haskell,这对文件输入输出来说是低效的,因为每个字符都是单独分配的(我认为这意味着String在Haskell中基本上是一个链表,但我不确定)。
但是,如果默认的字符串实现对文件I/O来说是低效的,那么在内存中处理字符串也是低效的吗?为什么或为什么不是?C使用char数组表示字符串,我认为这将是大多数语言中默认的做法。
据我所见,String的列表实现会占用更多的内存,因为每个字符都需要开销,并且迭代所需的时间也更长,因为需要进行指针解引用才能获取下一个字符。但是,到目前为止我喜欢玩Haskell,所以我想相信默认实现是高效的。