[Haskell-cafe] Why no IO transformer monad?

Udo Stenzel u.stenzel at web.de
Mon Dec 20 03:55:41 EST 2004

Henning Sato von Rosen <henning.von.rosen at gmail.com> schrieb am 18.12.04 18:31:11:
> For each basic monad there seems to be a corresponding transformer,
> e.g.  'StateT' for 'State' and so on.

To be useful every transformer has a "run" method of some kind.  For a hypothetical
IO transformer it would look like

runIOT :: Monad m => IOT m a -> m a

...which is basically the same as unsafePerformIO and defeats the purpose of
having an IO Monad at all.  If you want to retain the IO-type in the result, then
you don't need IOT at all, layering any transformer on top of IO is exactly what's


Mit WEB.DE FreePhone mit hoechster Qualitaet ab 0 Ct./Min.
weltweit telefonieren! http://freephone.web.de/?mc=021201

More information about the Haskell-Cafe mailing list