data Expr = Lit Int | Add Expr Expr | Sub Expr Expr {- (3 + 2)-4 ((Lit 3) + (Lit 2) )-(Lit 4) (Add (Lit 3) (Lit 2) )-(Lit 4) eval (Sub (Add (Lit 3) (Lit 2)) (Lit 4)) = 5 - 4 = 1 eval (Add (Lit 3) (Lit 2)) = 3 + 2 = 5 -} eval :: Expr -> Int eval (Lit n) = n eval (Add e1 e2) = (eval e1) + (eval e2) eval (Sub e1 e2) = (eval e1) -(eval e2)