implementation module main import Data.GenDefault import StdEnv import Sub gDefault{|Expr|} = Lit 0 eval :: Expr -> Int eval (Lit i) = i eval (e1 +. e2) = eval e1 + eval e2 eval x = evalSub x pprint :: Expr -> String pprint (Lit i) = toString i pprint (e1 +. e2) = pprint e1 +++ " + " +++ pprint e2 pprint x = pprintSub x Start = pprint (Lit 5 -. Lit 6)