Monad zum Verfolgen von Nebenwirkungen

8

In Haskell haben wir die IO -Monade, um mit Nebenwirkungen umzugehen, obwohl es nicht in der Lage ist, Nebenwirkungen auszudrücken, Sie wissen nicht wirklich, welche Art von Nebeneffekt wirklich passiert:

%Vor%

In PureScript haben wir die Eff -Monade, in der Sie wissen, welche Art von Nebenwirkungen gemäß der Typsignatur auftreten:

%Vor%

Hier ist es klar, dass die Funktion main das Dateisystem benutzt, Nachrichten an die Konsole zurückverfolgt und mit dem aktuellen Prozess umgehen kann, wo wir ein spezifisches Modul Control.Monad.Eff für den Umgang mit Nebenwirkungen haben, und Submodule wie Control.Monad.Eff.Random und Control.Monad.Eff.Console .

Nehmen Sie als Beispiel Folgendes:

%Vor%

Dies ist so viel spezifischer als nur "Hey, hier passiert ein Nebeneffekt, das ist es, nicht mehr, was du wissen musst!" . Ich habe durch das Netz geschaut und ich habe keine Monade gesehen, die vollständig genug ist, um Nebenwirkungen zu verfolgen.

Gibt es in Haskell eine bestimmte Monade wie Eff , um Nebenwirkungen zu verfolgen?

Vielen Dank im Voraus.

    
Marcelo Camargo 13.08.2015, 11:41
quelle

1 Antwort

4

Es gibt einige Bibliotheken, die ähnliche Effektsysteme für Haskell definieren.

Ich habe einige mit extensible-effects gearbeitet und fand es ziemlich einfach, restricted IO hinzuzufügen, zB STDIO , FileIO , Effekte. Der Mangel an Compiler-Unterstützung ist etwas weniger schön zu verwenden.

Wenn Sie es ausprobieren möchten, können Sie sich von vorhandenen Effekten für das extensible-effects -Framework inspirieren lassen: Ссылка

Es scheint eine Version von extensible-effects zu geben, die Typeable nicht verwendet, um Effekte nachzuverfolgen: Ссылка . Das sollte es schöner machen, neue Effekte zu schreiben.

    
adamse 13.08.2015 12:37
quelle

Tags und Links