在标准前奏中:
Prelude> :t iterate
iterate :: (a -> a) -> a -> [a]
然而,在经典的前奏中没有迭代,所以我认为可能有一些更通用的函数来做同样的事情,也许是一个单子函数。我只是无法弄清楚它是什么。有吗?
在标准前奏中:
Prelude> :t iterate
iterate :: (a -> a) -> a -> [a]
然而,在经典的前奏中没有迭代,所以我认为可能有一些更通用的函数来做同样的事情,也许是一个单子函数。我只是无法弄清楚它是什么。有吗?
你总是可以用ClassyPrelude.repeat
and重新实现它Data.List.scanl
:
iterate = \f a -> scanl (\a f -> f a) a (repeat f)