Lambda_lib.Asttype 'name t = | Var of 'nameVariable x
| Abs of 'name * 'name tAbstraction λx.t
| App of 'name t * 'name tApplication f g
| Int of intInteger literal 42
| BinOp of binop * 'name t * 'name tBinary operation e1 + e2
| If of 'name t * 'name t * 'name t optionConditional if cond then e1 else e2
| Let of bool * 'name * 'name t * 'name tLet binding let (rec) x = e1 in e2. bool indicates recursion
The main type for our AST