Today I learnt that Haskell has *three* ways of changing what syntax means!
Quasiquotation: https://wiki.haskell.org/Quasiquotation
Template Haskell (like Lisp macros): https://wiki.haskell.org/Template_Haskell
RebindableSyntax:
https://ocharles.org.uk/guest-posts/2014-12-06-rebindable-syntax.html