Generalised Algebraic Data Types Simon Peyton Jones Microsoft Research Geoffrey Washburn University of Pennsylvania Stephanie Weirich University of Pennsylvania A typical evaluator data Term = Lit Int | Succ Term | IsZero Term | If Term Term Term data Value = VInt Int | VBool Bool eval :: Term -> Value eval (Lit i) = VInt i eval (Succ t) = case eval t of { VInt i -> VInt (i+1) } eval (IsZero t) =
{{#tags}}- {{label}}
{{/tags}}