
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 address. Anders