diff -r b6a64fe38634 -r a741416574e1 src/Tools/code/code_target.ML --- a/src/Tools/code/code_target.ML Tue Jan 29 10:19:56 2008 +0100 +++ b/src/Tools/code/code_target.ML Tue Jan 29 10:19:58 2008 +0100 @@ -38,7 +38,7 @@ val assert_serializer: theory -> string -> string; val eval_verbose: bool ref; - val eval_invoke: theory -> (string * (unit -> 'a) option ref) + val eval: theory -> (string * (unit -> 'a) option ref) -> CodeThingol.code -> CodeThingol.iterm * CodeThingol.itype -> string list -> 'a; val code_width: int ref; @@ -75,31 +75,31 @@ val APP = INFX (~1, L); -fun eval_lrx L L = false - | eval_lrx R R = false - | eval_lrx _ _ = true; +fun fixity_lrx L L = false + | fixity_lrx R R = false + | fixity_lrx _ _ = true; -fun eval_fxy NOBR NOBR = false - | eval_fxy BR NOBR = false - | eval_fxy NOBR BR = false - | eval_fxy (INFX (pr, lr)) (INFX (pr_ctxt, lr_ctxt)) = +fun fixity NOBR NOBR = false + | fixity BR NOBR = false + | fixity NOBR BR = false + | fixity (INFX (pr, lr)) (INFX (pr_ctxt, lr_ctxt)) = pr < pr_ctxt orelse pr = pr_ctxt - andalso eval_lrx lr lr_ctxt + andalso fixity_lrx lr lr_ctxt orelse pr_ctxt = ~1 - | eval_fxy _ (INFX _) = false - | eval_fxy (INFX _) NOBR = false - | eval_fxy _ _ = true; + | fixity _ (INFX _) = false + | fixity (INFX _) NOBR = false + | fixity _ _ = true; fun gen_brackify _ [p] = p | gen_brackify true (ps as _::_) = Pretty.enclose "(" ")" ps | gen_brackify false (ps as _::_) = Pretty.block ps; fun brackify fxy_ctxt ps = - gen_brackify (eval_fxy BR fxy_ctxt) (Pretty.breaks ps); + gen_brackify (fixity BR fxy_ctxt) (Pretty.breaks ps); fun brackify_infix infx fxy_ctxt ps = - gen_brackify (eval_fxy (INFX infx) fxy_ctxt) (Pretty.breaks ps); + gen_brackify (fixity (INFX infx) fxy_ctxt) (Pretty.breaks ps); type class_syntax = string * (string -> string option); type typ_syntax = int * ((fixity -> itype -> Pretty.T) @@ -131,7 +131,7 @@ error ("Inconsistent mixfix: too less arguments"); in (i, fn pr => fn fixity_ctxt => fn args => - gen_brackify (eval_fxy fixity_this fixity_ctxt) (fillin pr mfx args)) + gen_brackify (fixity fixity_this fixity_ctxt) (fillin pr mfx args)) end; fun parse_infix prep_arg (x, i) s = @@ -1390,7 +1390,7 @@ |>> (fn p => semicolon [str "let", p, str "=", pr vars NOBR t]); val (binds, t) = implode_monad c_bind t; val (ps, vars') = fold_map pr_monad binds vars; - fun brack p = if eval_fxy BR fxy then Pretty.block [str "(", p, str ")"] else p; + fun brack p = if fixity BR fxy then Pretty.block [str "(", p, str ")"] else p; in (brack o Pretty.block_enclose (str "do {", str "}")) (ps @| pr vars' NOBR t) end; in (1, pretty) end; @@ -1715,14 +1715,14 @@ (Symtab.lookup alias) (Symtab.lookup class) (Symtab.lookup tyco) (Symtab.lookup const) end; -fun eval_invoke thy (ref_name, reff) code (t, ty) args = +fun eval thy (ref_name, reff) code (t, ty) args = let val _ = if CodeThingol.contains_dictvar t then error "Term to be evaluated constains free dictionaries" else (); val val_args = space_implode " " (NameSpace.qualifier CodeName.value_name :: map (enclose "(" ")") args); + val code' = CodeThingol.add_value_stmt (t, ty) code; val seri = get_serializer thy "SML" false (SOME "Isabelle_Eval") NONE []; - val code' = CodeThingol.add_value_stmt (t, ty) code; val label = "evaluation in SML"; fun eval () = (seri (SOME [CodeName.value_name]) code'; ML_Context.evaluate Output.ml_output (!eval_verbose) (ref_name, reff) val_args); @@ -2198,13 +2198,13 @@ #> add_serializer (target_Haskell, isar_seri_haskell) #> add_serializer (target_diag, fn _ => fn _=> fn _ => seri_diagnosis) #> add_syntax_tyco "SML" "fun" (SOME (2, fn pr_typ => fn fxy => fn [ty1, ty2] => - (gen_brackify (case fxy of NOBR => false | _ => eval_fxy (INFX (1, R)) fxy) o Pretty.breaks) [ + (gen_brackify (case fxy of NOBR => false | _ => fixity (INFX (1, R)) fxy) o Pretty.breaks) [ pr_typ (INFX (1, X)) ty1, str "->", pr_typ (INFX (1, R)) ty2 ])) #> add_syntax_tyco "OCaml" "fun" (SOME (2, fn pr_typ => fn fxy => fn [ty1, ty2] => - (gen_brackify (case fxy of NOBR => false | _ => eval_fxy (INFX (1, R)) fxy) o Pretty.breaks) [ + (gen_brackify (case fxy of NOBR => false | _ => fixity (INFX (1, R)) fxy) o Pretty.breaks) [ pr_typ (INFX (1, X)) ty1, str "->", pr_typ (INFX (1, R)) ty2