IO
Монады в Haskell часто объясняется как государственной монады , где государство является мир. Таким образом, значение типа IO a
monad рассматривается как нечто подобное worldState -> (a, worldState)
.
Некоторое время назад я прочитал статью (или сообщение в блоге / списке рассылки), в которой критиковал это мнение и приводил несколько причин, по которым он неверен. Но я не могу вспомнить ни статью, ни причины. Кто-нибудь знает?
Изменить: статья кажется потерянной, поэтому давайте начнем собирать различные аргументы здесь. Я начинаю вознаграждение, чтобы сделать вещи более интересными.
Редактировать: статья, которую я искал, - « Борьба с неловким составом: монадический ввод / вывод, параллелизм, исключения и вызовы на иностранном языке в Haskell » Саймона Пейтона Джонса. (Благодаря ответу TacTics.)