
19 Sep
2010
19 Sep
'10
10:34 p.m.
On Sun, Sep 19, 2010 at 07:53:54PM -0400, Brandon S Allbery KF8NH wrote:
Since IO must always be at the base(*) of any stack of monad transformers it is used in, the MonadIO class provides a convenience function liftIO that lifts its argument directly to the IO monad without having to step through any intermediates.
_______ * we call it "lifting" but we also claim IO is at the base of the stack, and I at least usually expect a base to be at the bottom. Nice and confusing :)
I think of liftIO as lifting its argument *from* the IO monad (at the bottom of the stack) into a monad higher up the stack. liftIO :: (MonadIO m) => IO a -> m a So I don't find it confusing/backwards at all. -Brent