[Haskell-beginners] Maybe, Either
Brent Yorgey
byorgey at seas.upenn.edu
Sun Sep 13 08:40:11 EDT 2009
On Sat, Sep 12, 2009 at 09:13:58PM +0300, Michael Snoyman wrote:
> I often times have to write a lookup function that returns its value into
> any monad instead of just Maybe. For example:
>
> mLookup :: (Eq k, Monad m) => k -> [(k, v)] -> m v
> mLookup k pairs = case lookup k pairs of
> Nothing -> fail "mLookup: nothing found"
> Just v -> return v
>
This is actually the type that the lookup function USED to have, but
it was changed since monads actually have nothing to do with failing
(the fail method is just a hack used to handle pattern-match failures
in do-notation). Probably a better implementation of this would be
mLookup :: (Eq k, MonadPlus m) => k -> [(k,v)] -> m v
mLookup k pairs = maybe mzero return (lookup k pairs)
-Brent
More information about the Beginners
mailing list