iterate :: (a -> a) -> a -> [a]
(As you probably know) iterate
is a function that takes a function and starting value. Then it applies the function to the starting value, then it applies the same function to the last result, and so on.
Prelude> take 5 $ iterate (^2) 2
[2,4,16,256,65536]
Prelude>
The result is an infinite list. (that's why I use take
).
My question how would you implement your own iterate'
function in Haskell, using only the basics ((:)
(++)
lambdas, pattern mataching, guards, etc.) ?
(Haskell beginner here)