Lambda_lib.Asttype expr = | Var of nameVariable, like x
*)| Int of intInteger literal
*)| Abs of name * exprFunction: fun x -> e
*)| App of expr * exprFunction application: e1 e2
*)| Let of name * expr * exprNon-recursive let: let x = e1 in e2
*)| Let_rec of name * expr * exprRecursive let: let rec f = e1 in e2
*)| If of expr * expr * exprIf expression
*)| Unop of unop * exprUnary operation
*)| Binop of binop * expr * exprArithmetic operation
*)| Cmp of cmpop * expr * exprComparison
*)type program = expr