equal
deleted
inserted
replaced
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); |