-- Slide 64 data Expr a = Val a | Inc (Expr a) | Dec (Expr a) | Inv (Expr a) | Neg (Expr a) evaluate::(Fractional a)=>Expr a -> a evaluate (Val x) = x evaluate (Inc e) = 1 + evaluate e evaluate (Dec e) = (evaluate e) - 1 evaluate (Inv e) = 1 / (evaluate e) evaluate (Neg e) = negate (evaluate e)