[Haskell] Rebindable syntax for monads and arrows