Erklären Sie über ein "Duplikat"
Jemand zeigen Sie auf Is this a case for foldM? als ein mögliches Duplikat. Nun bin ich der festen Überzeugung, dass zwei Fragen, die mit identischen Antworten beantwortet werden können, nicht unbedingt Duplikate sind! "Was ist 1 - 2" und "Was ist i^2" ergibt beide "-1", aber nein, sie sind keine doppelten Fragen. Meine Frage (die bereits beantwortet wurde, Art von) war etwa "ob die Funktion iterateM
in Haskell Standard-Bibliothek existiert", nicht "Wie eine verkettete Monade Aktion implementieren".Gibt es in Haskell eine "Ketten" -Monadenfunktion?
Die Frage
Als ich einige Projekte schreiben, fand ich mich dieses combinator schreiben:
repeatM :: Monad m => Int -> (a -> m a) -> a -> m a
repeatM 0 _ a = return a
repeatM n f a = (repeatM (n-1) f) =<< f a
Es führt nur eine einstellige Aktion n
mal, das vorherige Ergebnis in die nächste Aktion Fütterung. Ich habe versucht, einige hoogle
Suche und einige Google-Suche, und habe nichts gefunden, das mit dem "Standard" Haskell kommt. Gibt es eine solche formale Funktion, die vordefiniert ist?
Ich habe es auch in * normalen * Paketen nicht gefunden - aber [Hayoo] (http://hayoo.fh-wedel.de/?query=Monad+m+%3D%3E+Int+%%%%%+E3++) % 28a + -% 3E + m + a% 29 + -% 3E + a + -% 3E + m + a) kennt mindestens 2 Orte - in diesem Fall würde ich * replizieren * ich denke (vielleicht ist 'chainM' ein besserer name though - 'replicate' ist * gegeben *) – Carsten
Liefert' replicateM' das vorherige Ergebnis? –
Nein, tut es nicht - aber wenn ich wiederhole oder repliziere denke ich über verschiedene Dinge (gerade aus diesem Grund) - es ist wirklich nur ein Kommentar auf die Namensgebung - Entschuldigung, wenn es ein Missverständnis verursacht – Carsten