为什么 iterate
没有定义为
iterate :: (a -> a) -> a -> [a]
iterate f x = xs where xs = x : map f xs
在前奏中?
最佳答案
像这样打结似乎并没有增加共享。
与:
cycle xs = let x = xs ++ x in x
在此处打结的效果是在内存中创建循环链表。
x
是它自己的尾部。有真正的收获。建议的实现不会增加朴素实现的共享。首先,它是没有办法的-像
iterate (+1) 0
这样的东西都没有共享结构。关于haskell - 为什么Prelude中的 `iterate`不能打结?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30949430/