src/Pure/General/change_table.ML
changeset 77723 b761c91c2447
parent 56139 b7add947a6ef
child 77974 93999ffdb9dd
--- a/src/Pure/General/change_table.ML	Mon Mar 27 19:41:18 2023 +0200
+++ b/src/Pure/General/change_table.ML	Mon Mar 27 21:48:47 2023 +0200
@@ -36,6 +36,7 @@
 struct
 
 structure Table = Table(Key);
+structure Set = Set(Key);
 type key = Table.key;
 
 exception SAME = Table.SAME;
@@ -45,7 +46,7 @@
 (* optional change *)
 
 datatype change =
-  No_Change | Change of {base: serial, depth: int, changes: Table.set option};
+  No_Change | Change of {base: serial, depth: int, changes: Set.T option};
 
 fun make_change base depth changes =
   Change {base = base, depth = depth, changes = changes};
@@ -55,11 +56,11 @@
   | ignore_change change = change;
 
 fun update_change key (Change {base, depth, changes = SOME ch}) =
-      make_change base depth (SOME (Table.insert (K true) (key, ()) ch))
+      make_change base depth (SOME (Set.insert key ch))
   | update_change _ change = change;
 
 fun base_change true No_Change =
-      make_change (serial ()) 0 (SOME Table.empty)
+      make_change (serial ()) 0 (SOME Set.empty)
   | base_change true (Change {base, depth, changes}) =
       make_change base (depth + 1) changes
   | base_change false (Change {base, depth, changes}) =
@@ -128,7 +129,7 @@
                       (case (SOME (f key (maybe_swap (x, y))) handle Table.SAME => NONE) of
                         NONE => tab
                       | SOME z => Table.update (key, z) tab)));
-          in make_change_table (change', Table.fold (update o #1) ch2 tab1) end)
+          in make_change_table (change', Set.fold update ch2 tab1) end)
   end;
 
 fun merge eq =