Proposal: Add Monad instance for WrappedMonad

Daniel Gorín dgorin at dc.uba.ar
Fri Aug 2 12:18:11 CEST 2013


Control.Applicative.WrappedMonad allows one to use the Functor and Applicative interfaces of something that is only known to be a Monad but, oddly enough, it hides its Monad interface.  The proposal is to add the missing Monad instance. 

A typical use case for this instance would be:

f :: Failure String m => T1 -> m T2
f = unwrapMonad . f'
  where
    f' x = do ...  -- one can also use (<$>), (<*>), etc here

(NB. the Failure class is a subclass of Monad only).

A related proposal for the transformers package would be to add a MonadTrans instance for WrappedMonad as well.

Thanks,
Daniel



More information about the Libraries mailing list