type exp = Var of int | Lit of int | Lam of (int * exp) | App of (exp * exp) | Plus of (exp * exp) | Minus of (exp * exp) | Ifz of (exp * exp * exp) and result = Resint of int | Closure of (int * exp * env) and env = Empty | Extended of (int * result * env) ;; (* >>>>>> This definition must remain intact <<<<<<< *) let sum10 = App(Lam(19, App(App(Var 19, Var 19), Lit 10)), Lam(18, Lam(17, Ifz(Var 17, Lit 0, Plus(Var 17, App(App(Var 18, Var 18), Minus(Var 17, Lit 1))))))) ;; exception Bad ;; (* >>>>>> Most of your work is to implement eval <<<<<<< *) let rec eval(x, e) = raise Bad; eval (sum10, Empty) ;;