datatype expr = Int of int | Neg of expr | Plus of expr * expr | Times of expr * expr fun eval (Int i) = i | eval (Neg e) = ~(eval e) | eval (Plus (e1, e2)) = (eval e1) + (eval e2) | eval (Times (e1, e2)) = (eval e1) * (eval e2) val result = eval (Plus (Int 2, Neg (Int 3)))