4 datatype Exp :: rewrite =
6 | ADD of Exp, Exp => "(" _ "+" _ ")"
9 instantiate datatype Exp;
11 rewrite class Silly (Exp) {
17 NUM x: { x = x == 0 ? 1 : 2; }
22 Exp e = ADD(NUM(0),NUM(3));
24 cout << "Before = " << e << '\n';
26 cout << "After = " << e << '\n';