
11 Nov
2014
11 Nov
'14
5:18 p.m.
On Tue, Nov 11, 2014 at 08:57:48AM -0800, Evan Laforge wrote:
try :: Monad m => m (Maybe a) -> m (Maybe a) -> m (Maybe a) try action alternative = maybe alternative (return . Just) =<< action
Looks like the MonadPlus instance for MaybeT to me runMaybeT $ MaybeT (print "first" >> return (Just 1)) `mplus` MaybeT (print "second" >> return (Just 2)) Just 1 runMaybeT $ MaybeT (print "first" >> return Nothing) `mplus` MaybeT (print "second" >> return (Just 2)) "first" "second" Just 2 Tom