rendered paste bodysimplify :: Expr -> Expr
data Expr = Num Int
| Va1 String
| Var String
| Add Expr Expr
| Sub Expr Expr
| Mul Expr Expr deriving Show
simplify (Add x (Num 0)) = x
simplify (Add (Num 0) x) = x
simplify (Sub x (Num 0)) = x
simplify (Mul x (Num 1)) = x
simplify (Mul (Num 1) x) = x
simplify (Mul x (Num 0)) = (Num 0)
simplify (Mul (Num 0) x) = (Num 0)
simplify (Add x y) = Add (simplify x) (simplify y)
simplify (Sub x y) = Sub (simplify x) (simplify y)
simplify (Mul x y) = Mul (simplify x) (simplify y)