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.
>>7 syntax-heavy
Not really. Assuming that you're talking about how many operators Haskell has, they're just regular infix functions that can be user-defined. strongly-
Weak typing is shit. and statically-typed
I don't think it's a problem with static typing in general, it's just something Haskell's type system wasn't designed to be able to do easily. Besides, how would you do this in a dynamically-typed language?