iterate :: (a -> a) -> a -> [a]
(Como probablemente sepa) 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.¿Cómo implementarías (re) iterar en Haskell?
Prelude> take 5 $ iterate (^2) 2
[2,4,16,256,65536]
Prelude>
El resultado es una lista infinita. (es por eso que uso take
). Mi pregunta de cómo implementaría su propia función iterate'
en Haskell, usando solo lo básico ((:)
(++)
lambdas, mataching de patrones, protecciones, etc.)?
(principiante Haskell aquí)
Gracias por su respuesta. –
Esto se ve como una variación de la definición de "arreglo" "arreglo f = f (arreglo f)" similar a ... "iterar f (fa)" podría usar arreglo para definir iterar: "iterar fa = corregir (\ rx -> x: r (fx)) a "no es mejor que eso, solo idea ID decir :) – QuantumKarl