src/Tools/Code/code_eval.ML
changeset 35228 ac2cab4583f4
parent 35019 1ec0a3ff229e
child 35299 4f4d5bf4ea08
equal deleted inserted replaced
35227:d67857e3a8c0 35228:ac2cab4583f4
    51         val _ = if Code_Thingol.contains_dictvar t then
    51         val _ = if Code_Thingol.contains_dictvar t then
    52           error "Term to be evaluated contains free dictionaries" else ();
    52           error "Term to be evaluated contains free dictionaries" else ();
    53         val value_name = "Value.VALUE.value"
    53         val value_name = "Value.VALUE.value"
    54         val program' = program
    54         val program' = program
    55           |> Graph.new_node (value_name,
    55           |> Graph.new_node (value_name,
    56               Code_Thingol.Fun (Term.dummy_patternN, (([], ty), [(([], t), (Drule.dummy_thm, true))])))
    56               Code_Thingol.Fun (Term.dummy_patternN, (([], ty), [(([], t), (NONE, true))])))
    57           |> fold (curry Graph.add_edge value_name) deps;
    57           |> fold (curry Graph.add_edge value_name) deps;
    58         val (value_code, [SOME value_name']) = Code_ML.evaluation_code_of thy
    58         val (value_code, [SOME value_name']) = Code_ML.evaluation_code_of thy
    59           (the_default target some_target) "" naming program' [value_name];
    59           (the_default target some_target) "" naming program' [value_name];
    60         val sml_code = "let\n" ^ value_code ^ "\nin " ^ value_name'
    60         val sml_code = "let\n" ^ value_code ^ "\nin " ^ value_name'
    61           ^ space_implode " " (map (enclose "(" ")") args) ^ " end";
    61           ^ space_implode " " (map (enclose "(" ")") args) ^ " end";