¿Cómo (re) implementaría iterar en Haskell?
iterate :: (a -> a) -> a -> [a]
(Como probablemente sabes)iterate
es una función que toma una función y un valor inicial. Luego aplica la función al valor inicial, luego aplica la misma función al último resultado, y así sucesivamente.
Prelude> take 5 $ iterate (^2) 2
[2,4,16,256,65536]
Prelude>
El resultado es una lista infinita. (por eso usotake
) Mi pregunta, ¿cómo implementarías tu propioiterate'
funcionar en Haskell, utilizando solo los conceptos básicos ((:)
(++)
lambdas, patrón de emparejamiento, guardias, etc.)?
(Haskell principiante aquí)