expr t1 t2 t3 ::= Num t1 |
Lam t2 (expr t1 t2 t3) |
Var t3 |
App (expr t1 t2 t3) (expr t1 t2 t3);
list a ::= Nil | Cons a (list a) ; ;;
walk e = case e of
Num n -> n;
Lam v e2 -> walk e2;
Var v -> 0;
App e1 e2 ->
(\x y -> case x>y of True -> x; False -> y end) (walk e1) (walk e2)
end;
|