aboutsummaryrefslogtreecommitdiff
path: root/src/clojure/contrib/graph.clj
diff options
context:
space:
mode:
authorJeffrey Straszheim <straszheimjeffrey@gmail.com>2009-02-26 02:37:31 +0000
committerJeffrey Straszheim <straszheimjeffrey@gmail.com>2009-02-26 02:37:31 +0000
commit198164d96204437f166abcb89ea3ce830a9a6810 (patch)
treedbbbc4944f13d6b10e1f77cadee48667893fa842 /src/clojure/contrib/graph.clj
parent38c1b5707f7cdfa32e7b483838866bef5153df4d (diff)
Added recursive component test
Diffstat (limited to 'src/clojure/contrib/graph.clj')
-rw-r--r--src/clojure/contrib/graph.clj11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/clojure/contrib/graph.clj b/src/clojure/contrib/graph.clj
index 47d8e67e..28dc11ca 100644
--- a/src/clojure/contrib/graph.clj
+++ b/src/clojure/contrib/graph.clj
@@ -136,14 +136,17 @@
nm (into {} (map (fn [ns] [ns (find-neighbors ns)]) sccs))]
(struct directed-graph (set sccs) nm)))
+(defn recursive-component?
+ "Is the component (recieved from scc) self recursive?"
+ [g ns]
+ (or (> (count ns) 1)
+ (some ns (get-neighbors g (first ns)))))
+
(defn self-recursive-sets
"Returns, as a sequence of sets, the components of a graph that are
self-recursive."
[g]
- (let [recursive? (fn [ns]
- (or (> (count ns) 1)
- (some ns (get-neighbors g (first ns)))))]
- (filter recursive? (scc g))))
+ (filter (partial recursive-component? g) (scc g)))
;; Dependency Lists