
4 Feb
2011
4 Feb
'11
9:41 p.m.
On Fri, 4 Feb 2011, Max Bolingbroke wrote:
data M a = M { unM :: forall m. MonadPeelIO m => Reader.ReaderT () m a }
Maybe this won’t help in your actual code, but isn’t M isomorphic to IO (via unM :: M a -> IO a, M . liftIO :: IO a -> M a)? instance MonadPeelIO M where peelIO = M (liftIO (liftM (\k (M mx) -> liftM (\my -> (M (liftIO my))) (k mx)) peelIO)) Anders