Irgendwelche Methoden zur Wiederherstellung von genügend Faulheit, um den Knoten in einer Monate zu binden?

StackOverflow https://stackoverflow.com/questions/8379824

Frage

Ich möchte ein Stück Code schreiben (ich speichere mir viel Zeit, um sonst implementieren) den Knoten binden. Es geht grob so,

n <- myinstr n x

Wo theoretisch, myinstr sollte laufen x einen Wert erhalten, der werden wird n. myinstr, was in einem läuft State monad, wird sagen n in den Staat, aber das hat keinen Einfluss xBerechnung.

Ich habe versucht zu benutzen DoRec und eine naiive Umsetzung von mfix,

instance Monad 𝔪 => MonadFix (MyMonad 𝔪) where
    mfix f = fix (\mx -> mx >>= f)

Aber die Dinge frieren ein. Gibt es Methoden zur Behebung meines Codes (oder Methoden, um ihn zum ersten Mal korrekt zu entwerfen) oder sollte ich etwas Unkomplizierteres schreiben?

War es hilfreich?

Lösung

Es gibt keine generische Möglichkeit, einen willkürlichen Monad zu einem Beispiel von zu machen MonadFix. Der tatsächliche Code hängt vom Monad ab und ist für alle Monaden nicht einmal möglich. Sie können sich die verschiedenen Monaden ansehen, um zu sehen, wie es gemacht wird. Und wenn Ihre Monate tatsächlich ist State Es sollte bereits eine Instanz geben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top