19 lines
378 B
Text
19 lines
378 B
Text
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
|