(Dies ist keine verbindliche Antwort,. Nur versucht, mein Gedächtnis zu schleppen)
In gewissem Sinne jedes Mal, wenn ein ‚Zustand Monade‘ Code in einer Sprache, verwenden Sie den Typen System als ein potentielles Effektsystem. So "State" oder "IO" in Haskell erfassen diesen Begriff (IO erfasst auch eine ganze Reihe anderer Effekte). Ich erinnere mich vage daran, Artikel über verschiedene Sprachen gelesen zu haben, die fortgeschrittene Typsysteme verwenden, einschließlich Dinge wie "abhängige Typen", um die feinere Verwaltung von Effekten zu steuern, so dass zum Beispiel das Typ/Effekt-System Informationen darüber erfassen könnte, welche Speicherorte in einem verändert würden gegebener Datentyp Dies ist nützlich, da es Möglichkeiten bietet, zwei Funktionen zu machen, die sich gegenseitig ausschließende Bits des Zustands modifizieren können (Monaden pendeln typischerweise nicht und verschiedene Monaden sind nicht immer gut miteinander vereinbar), was sie oft macht schwer zu tippen (sprich: Zuweisen eines statischen Typs zu) 'vernünftige' Programme) ...
Eine Analogie zu einer sehr hand-welligen Ebene ist, wie Java Ausnahmen überprüft hat. Sie äußern im Typsystem zusätzliche Informationen über bestimmte Effekte (Sie können sich eine Ausnahme als einen "Effekt" für den Zweck der Analogie vorstellen), aber diese "Effekte" treten in der Regel über Ihr gesamtes Programm aus und sind nicht gut darin Übung (Sie enden mit einer Million "throws" -Klauseln oder greifen auf viele ungeprüfte Laufzeitausnahmetypen zurück).
Ich denke, dass in diesem Bereich eine Menge Forschung betrieben wird, sowohl für Forschungs-y- als auch Mainstream-Sprachen, da die Fähigkeit, Funktionen mit Effekt-Informationen zu versehen, die Fähigkeit des Compilers freisetzen kann, eine Reihe von Optimierungen durchzuführen Auswirkungen auf Nebenläufigkeit, und kann große Dinge für verschiedene Programmanalysen und Tooling tun. Ich persönlich habe keine großen Hoffnungen dafür, da ich glaube, dass viele kluge Leute schon lange daran arbeiten und es immer noch wenig zu zeigen gibt.
Heiliger Kuhmann, sollte das Englisch sein? Versuche mit der Definition eines "Effekts" zu beginnen und gehe von dort aus. "Staatsmonade"? lol! Ich glaube nicht, dass Sie annehmen können, dass der Leser mit Haskell vertraut ist ... –
Steven, ich bin kein Experte für monadische Programmierung, aber ich habe etwas Vertrautheit mit Haskell. –
@ [marxidad]: das ist großartig, aber (a) du hast das nicht in der Frage gesagt, also war es eine Annahme und (b) andere Leute werden die Antworten lesen. –