src/Pure/context.ML
changeset 39020 ac0f24f850c9
parent 37871 c7ce7685e087
child 41711 3422ae5aff3a
equal deleted inserted replaced
39019:bfd0c0e4dbee 39020:ac0f24f850c9
   135     val k = serial ();
   135     val k = serial ();
   136     val kind = {empty = empty, extend = extend, merge = merge};
   136     val kind = {empty = empty, extend = extend, merge = merge};
   137     val _ = CRITICAL (fn () => Unsynchronized.change kinds (Datatab.update (k, kind)));
   137     val _ = CRITICAL (fn () => Unsynchronized.change kinds (Datatab.update (k, kind)));
   138   in k end;
   138   in k end;
   139 
   139 
   140 val extend_data = Datatab.map' invoke_extend;
   140 val extend_data = Datatab.map invoke_extend;
   141 
   141 
   142 fun merge_data pp (data1, data2) =
   142 fun merge_data pp (data1, data2) =
   143   Datatab.keys (Datatab.merge (K true) (data1, data2))
   143   Datatab.keys (Datatab.merge (K true) (data1, data2))
   144   |> Par_List.map (fn k =>
   144   |> Par_List.map (fn k =>
   145     (case (Datatab.lookup data1 k, Datatab.lookup data2 k) of
   145     (case (Datatab.lookup data1 k, Datatab.lookup data2 k) of
   474   (case Datatab.lookup (! kinds) k of
   474   (case Datatab.lookup (! kinds) k of
   475     SOME init => init
   475     SOME init => init
   476   | NONE => raise Fail "Invalid proof data identifier");
   476   | NONE => raise Fail "Invalid proof data identifier");
   477 
   477 
   478 fun init_data thy =
   478 fun init_data thy =
   479   Datatab.map' (fn k => fn _ => invoke_init k thy) (! kinds);
   479   Datatab.map (fn k => fn _ => invoke_init k thy) (! kinds);
   480 
   480 
   481 fun init_new_data data thy =
   481 fun init_new_data data thy =
   482   Datatab.merge (K true) (data, init_data thy);
   482   Datatab.merge (K true) (data, init_data thy);
   483 
   483 
   484 in
   484 in