Simon Marlow writes: > All known Haskell compilers implement the IO type as a function type, > something like (World -> (World, a)). Mark Jones replies: > In Hugs, I did actually use a different implementation of the IO > monad, based on continuation passing > IO a = (a -> Ans) -> (IOError -> Ans) -> Ans Lennart replies: > And HBC does something very similar. In fact the real implementation of > I/O in HBC is still the old streams of request responses. And in nhc, the IO monad was originally something like Mark's continuation-passing style, but later changed to Simon's state transformer. So all generalisations are false, Simon. :-) Regards, Malcolm