merge
authorblanchet
Mon, 10 Dec 2012 16:20:04 +0100
changeset 50460 b00823a74450
parent 50459 52ec07a7f304 (current diff)
parent 50449 75e00ff42870 (diff)
child 50461 dc160c718f38
merge
--- a/src/Pure/General/graph.scala	Mon Dec 10 13:33:06 2012 +0100
+++ b/src/Pure/General/graph.scala	Mon Dec 10 16:20:04 2012 +0100
@@ -224,17 +224,16 @@
 
   /* transitive closure and reduction */
 
-  def transitive_closure: Graph[Key, A] =
+  private def transitive_step(z: Key): Graph[Key, A] =
   {
+    val (preds, succs) = get_entry(z)._2
     var graph = this
-    for {
-      (_, (_, (preds, succs))) <- this.entries
-      x <- preds
-      y <- succs
-    } graph = graph.add_edge(x, y)
+    for (x <- preds; y <- succs) graph = graph.add_edge(x, y)
     graph
   }
 
+  def transitive_closure: Graph[Key, A] = (this /: keys)(_.transitive_step(_))
+
   def transitive_reduction_acyclic: Graph[Key, A] =
   {
     val trans = this.transitive_closure