src/Tools/code/code_thingol.ML
changeset 27609 b23c9ad0fe7d
parent 27422 73d25d422124
child 27711 5052736b8bcc
equal deleted inserted replaced
27608:8fd5662ccd97 27609:b23c9ad0fe7d
   567 
   567 
   568 structure Program = CodeDataFun
   568 structure Program = CodeDataFun
   569 (
   569 (
   570   type T = program;
   570   type T = program;
   571   val empty = Graph.empty;
   571   val empty = Graph.empty;
   572   fun merge _ = Graph.merge (K true);
   572   fun purge thy cs program =
   573   fun purge _ NONE _ = Graph.empty
   573     let
   574     | purge NONE _ _ = Graph.empty
   574       val cs_exisiting =
   575     | purge (SOME thy) (SOME cs) program =
   575         map_filter (CodeName.const_rev thy) (Graph.keys program);
   576         let
   576       val dels = (Graph.all_preds program
   577           val cs_exisiting =
   577           o map (CodeName.const thy)
   578             map_filter (CodeName.const_rev thy) (Graph.keys program);
   578           o filter (member (op =) cs_exisiting)
   579           val dels = (Graph.all_preds program
   579         ) cs;
   580               o map (CodeName.const thy)
   580     in Graph.del_nodes dels program end;
   581               o filter (member (op =) cs_exisiting)
       
   582             ) cs;
       
   583         in Graph.del_nodes dels program end;
       
   584 );
   581 );
   585 
   582 
   586 val cached_program = Program.get;
   583 val cached_program = Program.get;
   587 
   584 
   588 fun transact f program =
   585 fun transact f program =