src/Pure/Tools/codegen_serializer.ML
changeset 22186 5203eb387a0c
parent 22144 c33450acd873
child 22197 461130ccfef4
equal deleted inserted replaced
22185:24bf0e403526 22186:5203eb387a0c
   619             val (binds, t') = CodegenThingol.unfold_abs t;
   619             val (binds, t') = CodegenThingol.unfold_abs t;
   620             fun pr ((v, pat), ty) = pr_bind BR ((SOME v, pat), ty);
   620             fun pr ((v, pat), ty) = pr_bind BR ((SOME v, pat), ty);
   621             val (ps, vars') = fold_map pr binds vars;
   621             val (ps, vars') = fold_map pr binds vars;
   622           in brackets (str "fun" :: ps @ str "->" @@ pr_term vars' NOBR t') end
   622           in brackets (str "fun" :: ps @ str "->" @@ pr_term vars' NOBR t') end
   623       | pr_term vars fxy (INum n) =
   623       | pr_term vars fxy (INum n) =
   624           brackets [str "Big_int.big_int_of_int", (str o IntInf.toString) n]
   624           if n > 0 then
       
   625             brackify fxy [str "Big_int.big_int_of_int", (str o IntInf.toString) n]
       
   626           else
       
   627             brackify fxy [str "Big_int.big_int_of_int",
       
   628               (str o enclose "(" ")" o prefix "-" o IntInf.toString o op ~) n]
   625       | pr_term vars _ (IChar c) =
   629       | pr_term vars _ (IChar c) =
   626           (str o enclose "'" "'")
   630           (str o enclose "'" "'")
   627             (let val i = ord c
   631             (let val i = ord c
   628               in if i < 32 orelse i = 39 orelse i = 92
   632               in if i < 32 orelse i = 39 orelse i = 92
   629                 then prefix "\\" (string_of_int i)
   633                 then prefix "\\" (string_of_int i)