Hi all I want to define a partial monad transformer i.e not defined for all kinds of data but the ones that have instances of certain classes. That is because in my lift instance code there are some hidden use of these classes.
But because in the MonadTrans definition does not refers to the data, no specialised lift seems possible: class MonadTrans t where lift :: Monad m => m a -> t m a Is that true? A possible adition could be to define (note: I did not test it, it is just an idea): class SpecialisedMonadTrans (t m a) where lift :: Monad m => m a -> t m a liftMN :: Monad m => m a -> t a The whole problem has certain relation with effect control. This kind of definition permits a more fine control of effect handling when passing from a monad to other depending on the idiosyncrasy of the monad m and the kind of a. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe