module Arithmetik_Eval where import Arithmetik_Type eval :: Term -> Integer eval t = case key t of Constant n -> n Operator o -> let [ l, r ] = map eval $ children t f = meaning o in f l r meaning :: Op -> (Integer -> Integer -> Integer) meaning Plus = (+) meaning Minus = (-) meaning Mal = (*) meaning Durch = div