159 val (bind :: binds, body) = Code_Thingol.unfold_let (ICase case_expr); |
159 val (bind :: binds, body) = Code_Thingol.unfold_let (ICase case_expr); |
160 fun print_match_val ((pat, ty), t) vars = |
160 fun print_match_val ((pat, ty), t) vars = |
161 vars |
161 vars |
162 |> print_bind tyvars some_thm BR pat |
162 |> print_bind tyvars some_thm BR pat |
163 |>> (fn p => (false, concat [str "val", p, str "=", |
163 |>> (fn p => (false, concat [str "val", p, str "=", |
164 constraint (print_term tyvars false some_thm vars NOBR t) (print_typ tyvars NOBR ty)])); |
164 constraint (print_term tyvars false some_thm vars NOBR t) (print_typ tyvars BR ty)])); |
165 fun print_match_seq t vars = |
165 fun print_match_seq t vars = |
166 ((true, print_term tyvars false some_thm vars NOBR t), vars); |
166 ((true, print_term tyvars false some_thm vars NOBR t), vars); |
167 fun print_match is_first ((IVar NONE, ty), t) = |
167 fun print_match is_first ((IVar NONE, ty), t) = |
168 if Code_Thingol.is_IAbs t andalso is_first |
168 if Code_Thingol.is_IAbs t andalso is_first |
169 then print_match_val ((IVar NONE, ty), t) |
169 then print_match_val ((IVar NONE, ty), t) |
332 (concat ([str "trait", (add_typarg o deresolve_class) class] |
332 (concat ([str "trait", (add_typarg o deresolve_class) class] |
333 @ the_list (print_super_classes classrels) @ [str "{"]), str "}") |
333 @ the_list (print_super_classes classrels) @ [str "{"]), str "}") |
334 (map print_classparam_val classparams)) |
334 (map print_classparam_val classparams)) |
335 :: map print_classparam_def classparams |
335 :: map print_classparam_def classparams |
336 @| Pretty.block_enclose |
336 @| Pretty.block_enclose |
337 (str ("object " ^ deresolve_class class ^ "{"), str "}") |
337 (str ("object " ^ deresolve_class class ^ " {"), str "}") |
338 (map (print_inst class) insts) |
338 (map (print_inst class) insts) |
339 ) |
339 ) |
340 end; |
340 end; |
341 in print_stmt end; |
341 in print_stmt end; |
342 |
342 |