Interpret_lib.Asttype expr = | EConst of intinteger literal: 42, -1
| EVar of idvariable: x, fact
| EBinop of binop * expr * exprbinary operation: e1 + e2
| EIf of expr * expr * exprconditional: if c then e1 else e2
| EFun of id * exprabstraction: fun x -> e
| EApp of expr * exprapplication: f x
| ELet of rec_flag * id * expr * exprbinding: let (rec)? x = e1 in e2