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) |