Nim's term-rewriting macros are wild: https://nim-lang.org/docs/manual.html#term-rewriting-macros (you can leverage Nim's side-effect analysis or enforce canonicalisation!)