src/Pure/General/change_table.ML
changeset 77975 a7ca67369755
parent 77974 93999ffdb9dd
child 77976 ca11a87bd2c6
equal deleted inserted replaced
77974:93999ffdb9dd 77975:a7ca67369755
    31   val map_default: key * 'a -> ('a -> 'a) -> 'a T -> 'a T
    31   val map_default: key * 'a -> ('a -> 'a) -> 'a T -> 'a T
    32   val delete_safe: key -> 'a T -> 'a T
    32   val delete_safe: key -> 'a T -> 'a T
    33   val insert_list: ('a * 'a -> bool) -> key * 'a -> 'a list T -> 'a list T
    33   val insert_list: ('a * 'a -> bool) -> key * 'a -> 'a list T -> 'a list T
    34   val remove_list: ('b * 'a -> bool) -> key * 'b -> 'a list T -> 'a list T
    34   val remove_list: ('b * 'a -> bool) -> key * 'b -> 'a list T -> 'a list T
    35   val update_list: ('a * 'a -> bool) -> key * 'a -> 'a list T -> 'a list T
    35   val update_list: ('a * 'a -> bool) -> key * 'a -> 'a list T -> 'a list T
       
    36   val merge_list: ('a * 'a -> bool) -> 'a list T * 'a list T -> 'a list T
    36 end;
    37 end;
    37 
    38 
    38 functor Change_Table(Key: KEY): CHANGE_TABLE =
    39 functor Change_Table(Key: KEY): CHANGE_TABLE =
    39 struct
    40 struct
    40 
    41 
   136   end;
   137   end;
   137 
   138 
   138 fun merge eq =
   139 fun merge eq =
   139   join (fn key => fn xy => if eq xy then raise Table.SAME else raise Table.DUP key);
   140   join (fn key => fn xy => if eq xy then raise Table.SAME else raise Table.DUP key);
   140 
   141 
       
   142 fun merge_list eq =
       
   143   join (fn _ => fn xy => if eq_list eq xy then raise Table.SAME else Library.merge eq xy);
       
   144 
   141 
   145 
   142 (* derived operations *)
   146 (* derived operations *)
   143 
   147 
   144 fun fold f arg = Table.fold f (table_of arg);
   148 fun fold f arg = Table.fold f (table_of arg);
   145 fun dest arg = Table.dest (table_of arg);
   149 fun dest arg = Table.dest (table_of arg);