src/Pure/type.ML
changeset 26669 c27efd6de25d
parent 26641 cf67665296c2
child 27273 d54ae0bdad80
equal deleted inserted replaced
26668:65023d4fd226 26669:c27efd6de25d
    68   val could_unifys: typ list * typ list -> bool
    68   val could_unifys: typ list * typ list -> bool
    69   val eq_type: tyenv -> typ * typ -> bool
    69   val eq_type: tyenv -> typ * typ -> bool
    70 
    70 
    71   (*extend and merge type signatures*)
    71   (*extend and merge type signatures*)
    72   val add_class: Pretty.pp -> NameSpace.naming -> bstring * class list -> tsig -> tsig
    72   val add_class: Pretty.pp -> NameSpace.naming -> bstring * class list -> tsig -> tsig
    73   val hide_classes: bool -> string list -> tsig -> tsig
    73   val hide_class: bool -> string -> tsig -> tsig
    74   val set_defsort: sort -> tsig -> tsig
    74   val set_defsort: sort -> tsig -> tsig
    75   val add_types: NameSpace.naming -> (bstring * int) list -> tsig -> tsig
    75   val add_types: NameSpace.naming -> (bstring * int) list -> tsig -> tsig
    76   val add_abbrevs: NameSpace.naming -> (string * string list * typ) list -> tsig -> tsig
    76   val add_abbrevs: NameSpace.naming -> (string * string list * typ) list -> tsig -> tsig
    77   val add_nonterminals: NameSpace.naming -> string list -> tsig -> tsig
    77   val add_nonterminals: NameSpace.naming -> string list -> tsig -> tsig
    78   val hide_types: bool -> string list -> tsig -> tsig
    78   val hide_type: bool -> string -> tsig -> tsig
    79   val add_arity: Pretty.pp -> arity -> tsig -> tsig
    79   val add_arity: Pretty.pp -> arity -> tsig -> tsig
    80   val add_classrel: Pretty.pp -> class * class -> tsig -> tsig
    80   val add_classrel: Pretty.pp -> class * class -> tsig -> tsig
    81   val merge_tsigs: Pretty.pp -> tsig * tsig -> tsig
    81   val merge_tsigs: Pretty.pp -> tsig * tsig -> tsig
    82 end;
    82 end;
    83 
    83 
   503         handle TYPE (msg, _, _) => error msg;
   503         handle TYPE (msg, _, _) => error msg;
   504       val space' = space |> NameSpace.declare naming c';
   504       val space' = space |> NameSpace.declare naming c';
   505       val classes' = classes |> Sorts.add_class pp (c', cs');
   505       val classes' = classes |> Sorts.add_class pp (c', cs');
   506     in ((space', classes'), default, types) end);
   506     in ((space', classes'), default, types) end);
   507 
   507 
   508 fun hide_classes fully cs = map_tsig (fn ((space, classes), default, types) =>
   508 fun hide_class fully c = map_tsig (fn ((space, classes), default, types) =>
   509   ((fold (NameSpace.hide fully) cs space, classes), default, types));
   509   ((NameSpace.hide fully c space, classes), default, types));
   510 
   510 
   511 
   511 
   512 (* arities *)
   512 (* arities *)
   513 
   513 
   514 fun add_arity pp (t, Ss, S) tsig = tsig |> map_tsig (fn ((space, classes), default, types) =>
   514 fun add_arity pp (t, Ss, S) tsig = tsig |> map_tsig (fn ((space, classes), default, types) =>
   606   NameSpace.merge_tables (Library.eq_snd (op = : serial * serial -> bool)) (types1, types2)
   606   NameSpace.merge_tables (Library.eq_snd (op = : serial * serial -> bool)) (types1, types2)
   607     handle Symtab.DUP d => err_in_decls d (the_decl types1 d) (the_decl types2 d);
   607     handle Symtab.DUP d => err_in_decls d (the_decl types1 d) (the_decl types2 d);
   608 
   608 
   609 end;
   609 end;
   610 
   610 
   611 fun hide_types fully cs = map_tsig (fn (classes, default, (space, types)) =>
   611 fun hide_type fully c = map_tsig (fn (classes, default, (space, types)) =>
   612   (classes, default, (fold (NameSpace.hide fully) cs space, types)));
   612   (classes, default, (NameSpace.hide fully c space, types)));
   613 
   613 
   614 
   614 
   615 (* merge type signatures *)
   615 (* merge type signatures *)
   616 
   616 
   617 fun merge_tsigs pp (tsig1, tsig2) =
   617 fun merge_tsigs pp (tsig1, tsig2) =