On 20 Dec 2012, at 14:07, Trung Quang Nguyen <trungnq97@gmail.com> wrote: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 bThe function f takes a non-in-a-monad value, and gives you an in-a-monad value.Bob