Каждая другая монада поставляется с версией трансформатора, и из того, что я знаю, идея трансформатора - это общее расширение монадов. После того, как строятся другие трансформаторы, IOT
будет что-то вроде
newtype IOT m a = IOT { runIOT :: m (IO a) }
для которого я мог бы делать полезные приложения на месте: IOT Maybe
может либо выполнить операцию ввода-вывода, либо ничего, IOT []
может создать список, который позже может быть sequence
d.
Итак, почему в Haskell нет трансформатора IO?
(Заметки: Я видел этот пост в Haskell Cafe, но не может его сильно понять. Кроме того, страница Hackage для трансформатора ST упоминает, возможно, связанную с этим проблему в описании, но не предоставляет никаких подробностей.)