Monads and Maybe

Martin Norbäck d95mback@dtek.chalmers.se
21 Aug 2003 22:54:16 +0200


tor 2003-08-21 klockan 22.26 skrev Jon Cast:
> Yes.  Many complicated proposals have been made, but there's a
> straightforward, general mechanism:
> 
> > addMaybe :: Num alpha => Maybe alpha -> Maybe alpha -> Maybe alpha
> > addMaybe a b = a >>= \x ->
> >                b >>= \y ->
> >                return (x + y)
> 
> or
> 
> > addMaybe a b = do
> >   x <- a
> >   y <- b
> >   return (x + y)

or

addMaybe = Monad.liftM2 (+)

I personally use those monadic lifting functions a lot. Monad.sequence
combined with list comprehension is another favorite.

Regards,

	Martin