And*_*anu 9 haskell loops combinators
iterate :: (a -> a) -> a -> [a]
Run Code Online (Sandbox Code Playgroud)
(你可能知道)iterate
是一个函数,它接受一个函数和起始值.然后它将函数应用于起始值,然后将相同的函数应用于最后的结果,依此类推.
Prelude> take 5 $ iterate (^2) 2
[2,4,16,256,65536]
Prelude>
Run Code Online (Sandbox Code Playgroud)
结果是一个无限的列表.(这就是我使用的原因take
).我的问题是如何iterate'
在Haskell中实现自己的功能,只使用基础知识((:)
(++)
lambdas,模式mataching,警卫等)?
(Haskell初学者在这里)
dan*_*tin 23
那么,迭代构建值的无穷列表一个递增˚F.所以我会写,追加一定的价值函数开始一个由递归调用与迭代构建列表发:
iterate :: (a -> a) -> a -> [a]
iterate f a = a : iterate f (f a)
Run Code Online (Sandbox Code Playgroud)
由于延迟评估,将仅评估计算我的函数值所需的构造列表的那一部分.