【发布时间】:2009-02-23 00:50:53
【问题描述】:
我目前正在自学 Haskell,我想知道在 Haskell 中使用字符串时的最佳实践是什么。
Haskell 中的默认字符串实现是一个 Char 列表。根据Real World Haskell,这对于文件输入输出效率很低,因为每个字符都是单独分配的(我假设这意味着字符串基本上是 Haskell 中的链表,但我不确定。)
但是,如果默认的字符串实现对于文件 i/o 来说效率低下,那么在内存中处理字符串是否也效率低下?为什么或者为什么不? C 使用一个 char 数组来表示一个字符串,我认为这将是大多数语言的默认处理方式。
正如我所见,String 的列表实现将占用更多内存,因为每个字符都需要开销,并且需要更多时间来迭代,因为需要指针解引用才能到达下一个字符。但到目前为止我一直喜欢使用 Haskell,所以我想相信默认实现是高效的。
【问题讨论】:
-
默认实现是最方便使用的,对于小字符串和想要对其执行的常见操作。对于您想基本上将其视为一个字节块的大字符串,它效率不高;使用 Data.ByteString 或 Data.ByteString.Lazy
标签: string haskell functional-programming