All apologies -- I'm still very much on the outside of Haskell looking in.
Why does the bind for a monad have this signature:
M a -> (a -> M b) -> M b
M a -> (M a -> M b) -> M b
i.e. a function that takes
M a instead of just
a is available to the function in both, but the context that
M provides is not available to the function in the 1st. Just the lifted value itself.
(If that's a silly question, just downvote me a lot & I'll delete it... like I say, still very much on the outside looking in)