If return a = return b then does a=b?
No. Consider the trivial monad: data Trivial a = Cow instance Monad Trivial where _ >>= _ = Cow return _ = Cow
No. Consider the trivial monad: data Trivial a = Cow instance Monad Trivial where _ >>= _ = Cow return _ = Cow