iterate :: (a -> a) -> a -> [a]
(Wie Sie wahrscheinlich wissen) iterate
ist eine Funktion, die eine Funktion und Startwert übernimmt. Dann wendet es die Funktion auf den Startwert an, wendet dann die gleiche Funktion auf das letzte Ergebnis an und so weiter.Wie würden Sie Iterate in Haskell (neu) implementieren?
Prelude> take 5 $ iterate (^2) 2
[2,4,16,256,65536]
Prelude>
Das Ergebnis ist eine unendliche Liste. (deshalb verwende ich take
). Meine Frage, wie würden Sie Ihre eigene iterate'
Funktion in Haskell implementieren, nur mit den Grundlagen ((:)
(++)
Lambda, Pattern Mataching, Wachen, etc.)?
(Haskell Anfänger hier)
Vielen Dank für Ihr Feedback. –
Das sieht aus wie eine Variation der "fix" -Definition "fix f = f (fix f)" ähnlich wie ... "iterate f (fa)" könnte man fix verwenden, um iterate zu definieren: "iterate fa = fix (\ rx -> x: r (fx)) ein "nicht dass es besser ist, dachte ID sagen :) – QuantumKarl