Hi. Just a brief question. System.IO functions are defined in IO monad and have signatures like Foo -> IO Bar. Would it be better to have all of them defined as (MonadIO m) => Foo -> m Bar? What are the problems that would arise? Sergey