[Haskell-cafe] Re: Move MonadIO to base

Anders Kaseorg andersk at MIT.EDU
Tue Apr 20 23:01:36 EDT 2010

On Tue, 20 Apr 2010, wren ng thornton wrote:
>     -- | The isomorphic Haskell98 version
>     class Monad m => MonadJoinIO m where 
>         -- | Embed the IO into the monad m
>         joinIO :: IO (m a) -> m a
>         -- | Extract the IO computation to the top level,
>         -- rendering the m pure from IO.
>         partIO :: m a -> IO (m a)
>     -- | The isomorphisms
>     joinIO'  m = morphIO (m >>=)
>     morphIO' f = joinIO (f partIO)

To establish an isomorphism, you also need to define partIO from morphIO. 
For example, I don’t see how I could define
  partIO :: IO a -> IO (ReaderT r IO a)
that extracts effects into the outer IO, because the effects depend on 
some unknown state of type r.

By the way:

> This bounced because I have different emails registered for cafe@ and 
> libraries@, so forwarding it along to the cafe.

You can sign up both addresses for the list, then log in to the Mailman 
web interface ( http://www.haskell.org/mailman/listinfo/haskell-cafe → 
Unsubscribe or edit options) and disable mail delivery on one of them.  
Then you get one copy of each message but you can post from either 


More information about the Haskell-Cafe mailing list