exception EvalError (* Reset the eval environment *) let eval_reset() = Toploop.initialize_toplevel_env() (* Eval some text. We get no result from this *) let evalp txt = try let lb = (Lexing.from_string txt) in let phr = !Toploop.parse_toplevel_phrase lb in ignore(Toploop.execute_phrase false Format.std_formatter phr) with _ -> raise EvalError (* Get the content of some defined variable *) let evalv v = Obj.obj (Toploop.getvalue v) (* Eval some text and then return some defined variable *) let eval v txt = evalp txt; evalv v (* Evaluate an expression, return the result *) let evalexp txt = eval "v" ("let v = " ^ txt ^ ";;")