【发布时间】:2011-02-10 22:50:36
【问题描述】:
我只是对 Haskell 中列表的一些确切实现细节感到好奇(GHC 特定的答案很好)——它们是简单的链表,还是有任何特殊的优化?更具体地说:
-
length和(!!)(例如)是否必须遍历列表? - 如果是这样,它们的值是否以任何方式缓存(即,如果我调用
length两次,是否必须两次迭代)? - 访问列表后面是否涉及遍历整个列表?
- 是否已记住无限列表和列表推导式? (即,对于
fib = 1:1:zipWith (+) fib (tail fib),每个值是递归计算的,还是依赖于先前计算的值?)
任何其他有趣的实现细节将不胜感激。提前致谢!
【问题讨论】:
-
Haskell 还有arrays 和"mutable arrays"。
标签: haskell linked-list ghc