module Simplify where -- -- Aufgabe 8 - Ausdrucksvereinfachung -- ------------------------------------------------------------------- data Expr = Var String | Val Int | Add Expr Expr | Mult Expr Expr deriving Show simplify (Var cs) = (Var cs) simplify (Val n) = (Val n) simplify (Add e1 e2) = combine (Add (simplify e1) (simplify e2)) simplify (Mult e1 e2) = combine (Mult (simplify e1) (simplify e2)) combine :: Expr -> Expr combine (Add (Val n) (Val m)) = Val (n+m) combine (Mult (Val n) (Val m)) = Val (n*m) combine expr = expr