Move MonadIO to base
Anders Kaseorg
andersk at MIT.EDU
Fri Apr 23 13:39:36 EDT 2010
On Fri, 23 Apr 2010, Tyson Whitehead wrote:
> Are you then saying that liftIO should be able to be defined via
> morphIO? I would be curious to see that as, after a bit of trying, I
> still can't see how to. Specifically, I can't capture the results of
> the desired IO operation.
Yes, just like lift is defined via morph:
liftIO' :: (MonadMorphIO m) => IO a -> m a
liftIO' m = morphIO $ \down -> m >>= down . return
main = runContT (runReaderT main' ()) return
main' = do
liftIO' $ putStrLn "What is your name?"
name <- liftIO' $ getLine
liftIO' $ putStrLn $ "Hello " ++ name
Anders
More information about the Libraries
mailing list