equal
deleted
inserted
replaced
177 (fn (entry, _) => (f entry, stamp ())) tab, xtab); |
177 (fn (entry, _) => (f entry, stamp ())) tab, xtab); |
178 |
178 |
179 in |
179 in |
180 |
180 |
181 val del_name = map_space o apfst o remove (op =); |
181 val del_name = map_space o apfst o remove (op =); |
|
182 fun del_name_extra name = map_space (apfst (fn [] => [] | x :: xs => x :: remove (op =) name xs)); |
182 val add_name = map_space o apfst o update (op =); |
183 val add_name = map_space o apfst o update (op =); |
183 val add_name' = map_space o apsnd o update (op =); |
184 val add_name' = map_space o apsnd o update (op =); |
184 |
185 |
185 end; |
186 end; |
186 |
187 |
195 else |
196 else |
196 let val names = valid_accesses space name in |
197 let val names = valid_accesses space name in |
197 space |
198 space |
198 |> add_name' name name |
199 |> add_name' name name |
199 |> fold (del_name name) (if fully then names else names inter_string [base name]) |
200 |> fold (del_name name) (if fully then names else names inter_string [base name]) |
|
201 |> fold (del_name_extra name) (get_accesses space name) |
200 end; |
202 end; |
201 |
203 |
202 |
204 |
203 (* merge *) |
205 (* merge *) |
204 |
206 |