Modelling monads with a typeclass is stupid. There isn't one true monad for a given type. It makes no sense that when you use bind with lists you automatically get concatmap.
>>11
I don't mean it that way, I'm just wondering what you think would be a better way to do it. It seems like for a decent implementation of monads with several different types depending on which monad is it, you'd basically need to write your own type system (Greenspun's tenth rule in reverse). And I'm not saying that Haskell is perfect.