equal
deleted
inserted
replaced
1705 error "Term to be evaluated constains free dictionaries" else (); |
1705 error "Term to be evaluated constains free dictionaries" else (); |
1706 val val_args = space_implode " " |
1706 val val_args = space_implode " " |
1707 (NameSpace.qualifier CodeName.value_name :: map (enclose "(" ")") args); |
1707 (NameSpace.qualifier CodeName.value_name :: map (enclose "(" ")") args); |
1708 val seri = get_serializer thy "SML" false (SOME "Isabelle_Eval") NONE []; |
1708 val seri = get_serializer thy "SML" false (SOME "Isabelle_Eval") NONE []; |
1709 val code' = CodeThingol.add_value_stmt (t, ty) code; |
1709 val code' = CodeThingol.add_value_stmt (t, ty) code; |
1710 fun eval () = ( |
1710 val label = "evaluation in SML"; |
1711 reff := NONE; |
1711 fun eval () = (seri (SOME [CodeName.value_name]) code'; |
1712 seri (SOME [CodeName.value_name]) code'; |
1712 evaluate (ref_name, reff) label Output.ml_output (!eval_verbose) val_args); |
1713 use_text "generated code for evaluation" Output.ml_output (!eval_verbose) |
1713 in NAMED_CRITICAL label eval end; |
1714 ("val _ = (" ^ ref_name ^ " := SOME (fn () => " ^ val_args ^ "))"); |
|
1715 case !reff |
|
1716 of NONE => error ("Could not retrieve value of ML reference " ^ quote ref_name |
|
1717 ^ " (reference probably has been shadowed)") |
|
1718 | SOME f => f |
|
1719 ); |
|
1720 in CRITICAL eval () end; |
|
1721 |
1714 |
1722 |
1715 |
1723 |
1716 |
1724 (** optional pretty serialization **) |
1717 (** optional pretty serialization **) |
1725 |
1718 |