Nim
Nim copied to clipboard
36 activations of term rewriting macro?
I took an example from the Nim Manual's TRM section: https://nim-lang.org/docs/manual.html#term-rewriting-macros
The example is almost as-is except that I added a debugEcho so that I know if/when the TRM is getting activated:
template mulIsCommutative{`*`(a, b)}(a, b: int): int =
debugEcho("-> Term rewriting activated!")
b * a
let x = 3
echo "Calculating x * 2:"
echo x * 2
Surprisingly that prints:
Calculating x * 2:
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
-> Term rewriting activated!
6
Ref: https://gitter.im/nim-lang/Nim?at=5bbe2eb6bbdc0b25051a4d02
what happens is that diverging rewrite rules get cancelled at some point - Araq
/cc @Araq