type t = | Var of int (* variable *) | App of t * t (* application *) | Abs of t (* abstraction *) | Sft of t (* shift *) | Rst of t (* reset *) type value_t = | VInt of int | VFun of (env_t -> cont_t -> value_t) * env_t | VCont of cont_t and cont_t = value_t -> value_t and env_t = value_t list let rec eval t env cont = match t with | Var n -> cont (List.nth env n) | App (t1, t2) -> eval t2 env (f