Proposal: Add Monad instance for WrappedMonad

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

Makes sense. +1
* Daniel Gorín
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

Daniel Gorín
writes:
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:
A related proposal for the transformers package would be to add a MonadTrans instance for WrappedMonad as well.
+1 -- John Wiegley FP Complete Haskell tools, training and consulting http://fpcomplete.com johnw on #haskell/irc.freenode.net

Definitely +1 from me
On 2 August 2013 22:43, John Wiegley
Daniel Gorín
writes: 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:
A related proposal for the transformers package would be to add a MonadTrans instance for WrappedMonad as well.
+1
-- John Wiegley FP Complete Haskell tools, training and consulting http://fpcomplete.com johnw on #haskell/irc.freenode.net
_______________________________________________ Libraries mailing list Libraries@haskell.org http://www.haskell.org/mailman/listinfo/libraries
participants (4)
-
Daniel Gorín
-
John Wiegley
-
Nathan van Doorn
-
Roman Cheplyaka