jacob
08/26/2018, 12:03 PMint eval(Node n) {
switch(n) {
case IntNode(int i): return i;
case NegNode(Node n): return -eval(n);
case AddNode(Node left, Node right): return eval(left) + eval(right);
case MulNode(Node left, Node right): return eval(left) * eval(right);
default: throw new IllegalStateException(n);
};
}