open Syntax (* Value *) type v = VNum of int | VFun of e * string * string list * v list | VContS of c * s * t * h | VContC of c * s * t | VEnv of v list and c = C0 | COp1 of e * string list * op * c | COp2 of op * c | CApp1 of e * string list * c | CApp2 of c | CPerform of c | CPerformShallow of c and s = v list and t = TNil | Trail of k and k = Hold of c * s | Append of k * k and m = (c * h * s * t) list and h = e * string * string * string list * v list (* to_string : v -> string *) let rec to_string value = match value with VNum n -> string_of_int n | VFun _ -> "" | VContS _ -> "" | VContC _ -> "" | VEnv _ -> "" (* Value.print : v -> unit *) let print exp = let str = to_string exp in print_string str