133 val copy_data = Datatab.map' invoke_copy; |
133 val copy_data = Datatab.map' invoke_copy; |
134 val extend_data = Datatab.map' invoke_extend; |
134 val extend_data = Datatab.map' invoke_extend; |
135 |
135 |
136 fun merge_data pp (data1, data2) = |
136 fun merge_data pp (data1, data2) = |
137 Datatab.keys (Datatab.merge (K true) (data1, data2)) |
137 Datatab.keys (Datatab.merge (K true) (data1, data2)) |
138 |> ParList.map (fn k => |
138 |> Par_List.map (fn k => |
139 (case (Datatab.lookup data1 k, Datatab.lookup data2 k) of |
139 (case (Datatab.lookup data1 k, Datatab.lookup data2 k) of |
140 (SOME x, NONE) => (k, invoke_extend k x) |
140 (SOME x, NONE) => (k, invoke_extend k x) |
141 | (NONE, SOME y) => (k, invoke_extend k y) |
141 | (NONE, SOME y) => (k, invoke_extend k y) |
142 | (SOME x, SOME y) => (k, invoke_merge pp k (invoke_extend k x, invoke_extend k y)))) |
142 | (SOME x, SOME y) => (k, invoke_merge pp k (invoke_extend k x, invoke_extend k y)))) |
143 |> Datatab.make; |
143 |> Datatab.make; |