[Haskell-cafe] Type famillies Lifting IO

2010-05-20 Thread oleg
Maciej Piechotka wrote: class (Monad m, Monad (IO' m)) = MonadIO m where type IO' m :: * - * liftIO :: IO a - IO' m a liftM :: m a - IO' m a The signature for liftIO betrays a problem. Since liftIO is a member of a type class, when liftIO is used in code, the type checker has to

[Haskell-cafe] Type famillies Lifting IO

2010-05-19 Thread Maciej Piechotka
I started playing with type families. I wanted to achieve, for the beginning, something like: import qualified Control.Monad.IO.Class as IOC import Control.Monad.Trans.Class import Control.Monad.Trans.Cont import Data.Functor.Identity class (Monad m, Monad (IO' m)) = MonadIO m where