minor performance tuning: prefer static values;
authorwenzelm
Wed, 25 Sep 2024 13:30:04 +0200
changeset 80955 7f028e2ca7db
parent 80954 47eb251187d6
child 80956 12994047862f
minor performance tuning: prefer static values;
src/Pure/Syntax/printer.ML
--- a/src/Pure/Syntax/printer.ML	Wed Sep 25 13:20:36 2024 +0200
+++ b/src/Pure/Syntax/printer.ML	Wed Sep 25 13:30:04 2024 +0200
@@ -137,11 +137,11 @@
   (if s = "type" then TypArg else Arg)
   (if Lexicon.is_terminal s then 1000 else p);
 
+in
+
 fun make_string s = String ([], s);
 fun make_literal s = String (Lexicon.literal_markup s, s);
 
-in
-
 fun xprod_to_fmt (Syntax_Ext.XProd (_, _, "", _)) = NONE
   | xprod_to_fmt (Syntax_Ext.XProd (_, xsymbs, const, pri)) =
       let
@@ -209,6 +209,14 @@
 val pretty_curried = Config.declare_bool ("Syntax.pretty_curried", \<^here>) (K false);
 val pretty_priority = Config.declare_int ("Syntax.pretty_priority", \<^here>) (K 0);
 
+local
+
+val par_block = Syntax_Ext.block_indent 1;
+val par_bg = make_string "(";
+val par_en = make_string ")";
+
+in
+
 fun pretty ctxt tabs trf markup_trans markup_extern ast0 =
   let
     val type_mode = Config.get ctxt pretty_type_mode;
@@ -255,10 +263,9 @@
             val T = if i < 0 then Pretty.fbrk else Pretty.brk i;
           in (T :: Ts, args') end
 
-    and parT m (pr, args, p, p': int) = #1 (synT m
-          (if p > p' orelse (show_brackets andalso p' <> 1000 andalso not (is_chain pr)) then
-            [Block (Syntax_Ext.block_indent 1, String ([], "(") :: pr @ [String ([], ")")])]
-           else pr, args))
+    and parT m (pr, args, p, p') = #1 (synT m
+          (if p > p' orelse (show_brackets andalso p' <> 1000 andalso not (is_chain pr))
+           then [Block (par_block, par_bg :: pr @ [par_en])] else pr, args))
 
     and atomT a = Pretty.marks_str (#1 markup_extern a, #2 markup_extern a)
 
@@ -294,6 +301,8 @@
       | astT (ast as Ast.Appl _, _) = raise Ast.AST ("pretty: malformed ast", [ast]);
   in astT (ast0, Config.get ctxt pretty_priority) end;
 
+end;
+
 
 (* pretty_term_ast *)