In der Sprache " Bereinigen" werden Eindeutigkeitstypen verwendet , um E / A in einer rein funktionalen Einstellung zu verarbeiten. Warum ging das Haskell-Komitee stattdessen mit Monaden ? Gab es andere Vorschläge für den Umgang mit Staaten, die das Komitee untersucht, sich aber dagegen entschieden hat?
Hinweis : Ich suche keinen heiligen Krieg zwischen Monaden und anderen Computerformen. Lassen Sie uns das Thema auf die Entscheidungen des Komitees in Bezug auf I / O beschränken.
functional-programming
history
haskell
Chrisaycock
quelle
quelle
Antworten:
Laut A History of Haskell: Lazy With Class (siehe Abschnitt 7) wurden anfangs drei verschiedene Modelle betrachtet: Streams , Fortsetzungen und "World Passing" (ich weiß nicht viel über Clean, aber es hört sich so an, als wäre dies der Clean-Weg ?).
Der letzte Absatz von Abschnitt 7.2 zeigt, dass das Konzept des Eindeutigkeitstyps zu diesem Zeitpunkt noch nicht entwickelt wurde:
Das Konzept der Monaden scheint in späteren Überarbeitungen von Haskell eingeführt worden zu sein (wiederverwendet von anderen Arbeiten), da es zu saubererem Code führte (verglichen mit Fortsetzungen / Streams):
quelle
Die beste Erklärung, die ich gesehen habe, ist Simon Peyton-Jones '" Bekämpfung der Peinlichen Truppe ".
Soweit ich mich an die Zeitung erinnere, spielten Fragen der Faulheit eine große Rolle bei der Entscheidung. (Ich bin nicht sicher, ob Clean standardmäßig so faul ist wie Haskell.)
quelle