inductive Expr | Var : Nat → Expr | Val : Nat → Expr | Add : Expr → Expr → Expr open Expr Nat def mkExpr : Nat → Nat → Expr | 0 v := Val v | (succ n) v := Add (mkExpr n (v+1)) (mkExpr n (v-1)) def eval : Expr → Nat | (Var x) := 0 | (Val v) := v | (Add l r) := eval l + eval r def main : IO UInt32 := IO.println (toString $ eval (mkExpr 26 1)) *> pure 0