
Andy Gill
"Manuel M. T. Chakravarty" wrote:
* I am not a big fan of introducing an extra monad (`GUI' in this case). It can easily become a pain in programs that do a lot of "normal" IO as you have to lift all IO functions to GUI.
So you want various IO operations, that act not only in the IO monad, but in other monads also? Perhaps something like
putStrLn :: (MonadIO io) => String -> io ()
Then writing you IO operations inside your GUI becomes trivial.
Nice idea, but unfortunately the H98 standard library and HsLibs are not implemented in that way. So, it doesn't really solve the problem at hand, because we would need to wrap all existing IO functions. But your approach is certainly something which should be kept in mind for the next revision of Haskell. Cheers, Manuel