equal
deleted
inserted
replaced
892 Pretty.block [str "SOME ", Pretty.block (str "[" :: |
892 Pretty.block [str "SOME ", Pretty.block (str "[" :: |
893 Pretty.commas (map (fn (s, _) => str (s ^ "_t ()")) args) @ |
893 Pretty.commas (map (fn (s, _) => str (s ^ "_t ()")) args) @ |
894 [str "]"])]]), |
894 [str "]"])]]), |
895 str ");"]) ^ |
895 str ");"]) ^ |
896 "\n\nend;\n"; |
896 "\n\nend;\n"; |
897 val _ = ML_Context.eval_in (SOME ctxt) false Position.none s; |
897 val _ = ML_Context.eval_text_in (SOME ctxt) false Position.none s; |
898 val dummy_report = ([], false) |
898 val dummy_report = ([], false) |
899 in (fn size => (! test_fn size, dummy_report)) end; |
899 in (fn size => (! test_fn size, dummy_report)) end; |
900 |
900 |
901 |
901 |
902 |
902 |
924 mk_app false (mk_term_of gr "Generated" false (fastype_of t)) |
924 mk_app false (mk_term_of gr "Generated" false (fastype_of t)) |
925 [str "(result ())"], |
925 [str "(result ())"], |
926 str ");"]) ^ |
926 str ");"]) ^ |
927 "\n\nend;\n"; |
927 "\n\nend;\n"; |
928 val _ = NAMED_CRITICAL "codegen" (fn () => (* FIXME ??? *) |
928 val _ = NAMED_CRITICAL "codegen" (fn () => (* FIXME ??? *) |
929 ML_Context.eval_in (SOME ctxt) false Position.none s); |
929 ML_Context.eval_text_in (SOME ctxt) false Position.none s); |
930 in !eval_result end; |
930 in !eval_result end; |
931 in e () end; |
931 in e () end; |
932 |
932 |
933 val (_, evaluation_conv) = Context.>>> (Context.map_theory_result |
933 val (_, evaluation_conv) = Context.>>> (Context.map_theory_result |
934 (Thm.add_oracle (Binding.name "evaluation", fn ct => |
934 (Thm.add_oracle (Binding.name "evaluation", fn ct => |
999 let |
999 let |
1000 val mode'' = (if lib then insert (op =) "library" else I) (remove (op =) "library" mode'); |
1000 val mode'' = (if lib then insert (op =) "library" else I) (remove (op =) "library" mode'); |
1001 val (code, gr) = setmp_CRITICAL mode mode'' (generate_code thy modules module) xs; |
1001 val (code, gr) = setmp_CRITICAL mode mode'' (generate_code thy modules module) xs; |
1002 val thy' = thy |> Context.theory_map (ML_Context.exec (fn () => |
1002 val thy' = thy |> Context.theory_map (ML_Context.exec (fn () => |
1003 (case opt_fname of |
1003 (case opt_fname of |
1004 NONE => ML_Context.eval false Position.none (cat_lines (map snd code)) |
1004 NONE => ML_Context.eval_text false Position.none (cat_lines (map snd code)) |
1005 | SOME fname => |
1005 | SOME fname => |
1006 if lib then app (fn (name, s) => File.write |
1006 if lib then app (fn (name, s) => File.write |
1007 (Path.append (Path.explode fname) (Path.basic (name ^ ".ML"))) s) |
1007 (Path.append (Path.explode fname) (Path.basic (name ^ ".ML"))) s) |
1008 (("ROOT", implode (map (fn (name, _) => |
1008 (("ROOT", implode (map (fn (name, _) => |
1009 "use \"" ^ name ^ ".ML\";\n") code)) :: code) |
1009 "use \"" ^ name ^ ".ML\";\n") code)) :: code) |