const fold = {expr match expr | `Plus (`Val 0, x): -> fold(x) | `Plus (`x, `Val 0): -> fold(x) | `Mul (`Val 0, `Val _): -> `Val 0 | `Mul (`Val _, `Val 0): -> `Val 0 ... }