
20 Dec
2012
20 Dec
'12
9:13 a.m.
On 20 Dec 2012, at 14:07, Trung Quang Nguyen
Hi all,
I saw this
instance Monad Maybe where return x = Just x Nothing >>= f = Nothing Just x >>= f = f x fail _ = Nothing
I am wondering about the implementation of function (>>=). Why don't it be Just x >>= f = Just (f x)?
Any body knows about this?
The reason is in the type of bind: (>>=) :: Monad m => m a -> (a -> m b) -> m b The function f takes a non-in-a-monad value, and gives you an in-a-monad value. Bob