equal
deleted
inserted
replaced
104 fun pr ((pat, ty), t) vars = |
104 fun pr ((pat, ty), t) vars = |
105 vars |
105 vars |
106 |> pr_bind tyvars thm BR ((NONE, SOME pat), ty) |
106 |> pr_bind tyvars thm BR ((NONE, SOME pat), ty) |
107 |>> (fn p => semicolon [p, str "=", pr_term tyvars thm vars NOBR t]) |
107 |>> (fn p => semicolon [p, str "=", pr_term tyvars thm vars NOBR t]) |
108 val (ps, vars') = fold_map pr binds vars; |
108 val (ps, vars') = fold_map pr binds vars; |
109 in |
109 in |
110 Pretty.block_enclose ( |
110 Pretty.block_enclose ( |
111 str "let {", |
111 str "(let {", |
112 concat [str "}", str "in", pr_term tyvars thm vars' NOBR body] |
112 concat [str "}", str "in", pr_term tyvars thm vars' NOBR body, str ")"] |
113 ) ps |
113 ) ps |
114 end |
114 end |
115 | pr_case tyvars thm vars fxy (((t, ty), clauses as _ :: _), _) = |
115 | pr_case tyvars thm vars fxy (((t, ty), clauses as _ :: _), _) = |
116 let |
116 let |
117 fun pr (pat, body) = |
117 fun pr (pat, body) = |
122 Pretty.block_enclose ( |
122 Pretty.block_enclose ( |
123 concat [str "(case", pr_term tyvars thm vars NOBR t, str "of", str "{"], |
123 concat [str "(case", pr_term tyvars thm vars NOBR t, str "of", str "{"], |
124 str "})" |
124 str "})" |
125 ) (map pr clauses) |
125 ) (map pr clauses) |
126 end |
126 end |
127 | pr_case tyvars thm vars fxy ((_, []), _) = str "error \"empty case\""; |
127 | pr_case tyvars thm vars fxy ((_, []), _) = |
|
128 (brackify fxy o Pretty.breaks o map str) ["error", "\"empty case\""]; |
128 fun pr_stmt (name, Code_Thingol.Fun (_, ((vs, ty), []))) = |
129 fun pr_stmt (name, Code_Thingol.Fun (_, ((vs, ty), []))) = |
129 let |
130 let |
130 val tyvars = Code_Printer.intro_vars (map fst vs) init_syms; |
131 val tyvars = Code_Printer.intro_vars (map fst vs) init_syms; |
131 val n = (length o fst o Code_Thingol.unfold_fun) ty; |
132 val n = (length o fst o Code_Thingol.unfold_fun) ty; |
132 in |
133 in |