equal
deleted
inserted
replaced
25 val get_first: (key * ('a * (Keys.T * Keys.T)) -> 'b option) -> 'a T -> 'b option |
25 val get_first: (key * ('a * (Keys.T * Keys.T)) -> 'b option) -> 'a T -> 'b option |
26 val fold: (key * ('a * (Keys.T * Keys.T)) -> 'b -> 'b) -> 'a T -> 'b -> 'b |
26 val fold: (key * ('a * (Keys.T * Keys.T)) -> 'b -> 'b) -> 'a T -> 'b -> 'b |
27 val get_entry: 'a T -> key -> key * ('a * (Keys.T * Keys.T)) (*exception UNDEF*) |
27 val get_entry: 'a T -> key -> key * ('a * (Keys.T * Keys.T)) (*exception UNDEF*) |
28 val get_node: 'a T -> key -> 'a (*exception UNDEF*) |
28 val get_node: 'a T -> key -> 'a (*exception UNDEF*) |
29 val map_node: key -> ('a -> 'a) -> 'a T -> 'a T |
29 val map_node: key -> ('a -> 'a) -> 'a T -> 'a T |
30 val map_node_yield: key -> ('a -> 'b * 'a) -> 'a T -> 'b * 'a T |
|
31 val map: (key -> 'a -> 'b) -> 'a T -> 'b T |
30 val map: (key -> 'a -> 'b) -> 'a T -> 'b T |
32 val imm_preds: 'a T -> key -> Keys.T |
31 val imm_preds: 'a T -> key -> Keys.T |
33 val imm_succs: 'a T -> key -> Keys.T |
32 val imm_succs: 'a T -> key -> Keys.T |
34 val immediate_preds: 'a T -> key -> key list |
33 val immediate_preds: 'a T -> key -> key list |
35 val immediate_succs: 'a T -> key -> key list |
34 val immediate_succs: 'a T -> key -> key list |
120 SOME entry => entry |
119 SOME entry => entry |
121 | NONE => raise UNDEF x); |
120 | NONE => raise UNDEF x); |
122 |
121 |
123 fun map_entry x f (G as Graph tab) = Graph (Table.update (x, f (#2 (get_entry G x))) tab); |
122 fun map_entry x f (G as Graph tab) = Graph (Table.update (x, f (#2 (get_entry G x))) tab); |
124 |
123 |
125 fun map_entry_yield x f (G as Graph tab) = |
|
126 let val (a, node') = f (#2 (get_entry G x)) |
|
127 in (a, Graph (Table.update (x, node') tab)) end; |
|
128 |
|
129 |
124 |
130 (* nodes *) |
125 (* nodes *) |
131 |
126 |
132 fun get_node G = #1 o #2 o get_entry G; |
127 fun get_node G = #1 o #2 o get_entry G; |
133 |
128 |
134 fun map_node x f = map_entry x (fn (i, ps) => (f i, ps)); |
129 fun map_node x f = map_entry x (fn (i, ps) => (f i, ps)); |
135 |
|
136 fun map_node_yield x f = map_entry_yield x (fn (i, ps) => |
|
137 let val (a, i') = f i in (a, (i', ps)) end); |
|
138 |
130 |
139 fun map_nodes f (Graph tab) = Graph (Table.map (apfst o f) tab); |
131 fun map_nodes f (Graph tab) = Graph (Table.map (apfst o f) tab); |
140 |
132 |
141 |
133 |
142 (* reachability *) |
134 (* reachability *) |