src/Tools/Code/code_scala.ML
changeset 44788 8b935f1b3cf8
parent 44338 700008399ee5
child 44789 5a062c23c7db
equal deleted inserted replaced
44778:18b1ba7cfcfe 44788:8b935f1b3cf8
    70            of SOME (c_ts as ((c, _), _)) => if is_none (const_syntax c)
    70            of SOME (c_ts as ((c, _), _)) => if is_none (const_syntax c)
    71                 then print_case tyvars some_thm vars fxy cases
    71                 then print_case tyvars some_thm vars fxy cases
    72                 else print_app tyvars is_pat some_thm vars fxy c_ts
    72                 else print_app tyvars is_pat some_thm vars fxy c_ts
    73             | NONE => print_case tyvars some_thm vars fxy cases)
    73             | NONE => print_case tyvars some_thm vars fxy cases)
    74     and print_app tyvars is_pat some_thm vars fxy
    74     and print_app tyvars is_pat some_thm vars fxy
    75         (app as ((c, ((arg_typs, _), function_typs)), ts)) =
    75         (app as ((c, (((arg_typs, _), function_typs), _)), ts)) =
    76       let
    76       let
    77         val k = length ts;
    77         val k = length ts;
    78         val arg_typs' = if is_pat orelse
    78         val arg_typs' = if is_pat orelse
    79           (is_none (const_syntax c) andalso is_singleton_constr c) then [] else arg_typs;
    79           (is_none (const_syntax c) andalso is_singleton_constr c) then [] else arg_typs;
    80         val (l, print') = case const_syntax c
    80         val (l, print') = case const_syntax c
   263       | print_stmt (name, Code_Thingol.Classinst ((class, (tyco, vs)),
   263       | print_stmt (name, Code_Thingol.Classinst ((class, (tyco, vs)),
   264             (super_instances, (classparam_instances, further_classparam_instances)))) =
   264             (super_instances, (classparam_instances, further_classparam_instances)))) =
   265           let
   265           let
   266             val tyvars = intro_tyvars vs reserved;
   266             val tyvars = intro_tyvars vs reserved;
   267             val classtyp = (class, tyco `%% map (ITyVar o fst) vs);
   267             val classtyp = (class, tyco `%% map (ITyVar o fst) vs);
   268             fun print_classparam_instance ((classparam, const as (_, (_, tys))), (thm, _)) =
   268             fun print_classparam_instance ((classparam, const as (_, ((_, tys), _))), (thm, _)) =
   269               let
   269               let
   270                 val aux_tys = Name.invent_names (snd reserved) "a" tys;
   270                 val aux_tys = Name.invent_names (snd reserved) "a" tys;
   271                 val auxs = map fst aux_tys;
   271                 val auxs = map fst aux_tys;
   272                 val vars = intro_vars auxs reserved;
   272                 val vars = intro_vars auxs reserved;
   273                 val aux_abstr = if null auxs then [] else [enum "," "(" ")"
   273                 val aux_abstr = if null auxs then [] else [enum "," "(" ")"