IO-монада просто реализует (семантически необходимое) проведение по цепи выполнения объекта "State of the World". Более грамотно было бы конечно создать класс монад этого типа, позволяющих создавать монады, отвечающие разным аспектам этого самого State of the World. В первую очередь для различения State of the External World и внутреннего (сиречь инкапсулированного) состояния мутабельных объектов. Все такие специализированные монады этого типа теоретически можно реализовать поверх общей IO, но практически, к сожалению, неудобно.
no subject