У меня была монада IO, описанная мной как государственная монада, где государство - "настоящий мир". Сторонники этого подхода к IO утверждают, что это делает операции ввода-вывода чистыми, как в ссылочной прозрачности. Почему это? С моей точки зрения, кажется, что код внутри монады IO имеет множество наблюдаемых побочных эффектов. Кроме того, невозможно ли описать практически любую нечистую функцию, как функцию реального мира? Например, мы не можем думать, скажем, что C malloc как функция, которая принимает RealWorld и Int и возвращает указатель и RealWorld, только так, как в монаде IO, RealWorld неявно?
Примечание. Я знаю, что такое монада и как она используется. Пожалуйста, не отвечайте ссылкой на случайный учебник по монаде, если он специально не задает мой вопрос.