`<$>` is looser than `>>=`, causing `f <$> g >>= h` to be `f <$> (g >>= h)` rather than `(f <$> g) >>= h`, which is different from Haskell. I'd propose: - [x] Align priority order with Haskell (wherever possible) to avoid such confusion. - [x] Document all notations somewhere.