Hi David,

Yours is more precise. f should output (ValueConstructor value) instead of (Monad value) :)

--Trung




2012/12/20 David McBride <toad3k@gmail.com>
The way I like to reason about these things
Prelude> :t (>>=)

(>>=) :: Monad m => m a -> (a -> m b) -> m b

Since the Monad m in this definition is Maybe, I'll just substitute it in like so:
Maybe a -> (a -> Maybe b) -> Maybe b

Then you notice that f is not (a -> b), it is (a -> Maybe b).

On Thu, Dec 20, 2012 at 9:07 AM, Trung Quang Nguyen <trungnq97@gmail.com> wrote:
Hi all,

I saw this

  1. instance Monad Maybe where  
  2.     return x = Just x  
  3.     Nothing >>= f = Nothing  
  4.     Just x >>=  = f x  
  5.     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?

--Trung


_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://www.haskell.org/mailman/listinfo/beginners





--
Trung Nguyen
Mobile: +45 50 11 10 63
LinkedIn: http://www.linkedin.com/pub/trung-nguyen/36/a44/187
View my blog at http://www.onextrabit.com/