Die IO
Monade in Haskell wird oft als Staatsmonade bezeichnet, in der der Staat die Welt ist. Ein Wert vom Typ IO a
monad wird also als so etwas wie angesehen worldState -> (a, worldState)
.
Vor einiger Zeit habe ich einen Artikel (oder einen Blog- / Mailinglisten-Beitrag) gelesen, in dem diese Ansicht kritisiert und verschiedene Gründe genannt wurden, warum sie nicht korrekt ist. Aber ich kann mich weder an den Artikel noch an die Gründe erinnern. Weiß jemand Bescheid?
Bearbeiten: Der Artikel scheint verloren zu sein, also wollen wir hier verschiedene Argumente zusammenfassen. Ich starte eine Prämie, um die Dinge interessanter zu machen.
Bearbeiten: Der Artikel, den ich gesucht habe, befasst sich mit der schwierigen Situation: monadische Ein- / Ausgabe, Parallelität, Ausnahmen und fremdsprachige Anrufe in Haskell von Simon Peyton Jones. (Dank der Antwort von TacTics.)