diff options
author | Jeffrey Straszheim <straszheimjeffrey@gmail.com> | 2009-02-24 23:53:51 +0000 |
---|---|---|
committer | Jeffrey Straszheim <straszheimjeffrey@gmail.com> | 2009-02-24 23:53:51 +0000 |
commit | 7631cfad764e954fc12840466698e85ede9674e6 (patch) | |
tree | 1431518887200391f293d63526cc66083695f603 /src | |
parent | 9a3145238ed1cdcc20019080e94c6baeeeb24259 (diff) |
Tweaked lazy-walk
Diffstat (limited to 'src')
-rw-r--r-- | src/clojure/contrib/graph.clj | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/clojure/contrib/graph.clj b/src/clojure/contrib/graph.clj index a1e82a25..47d8e67e 100644 --- a/src/clojure/contrib/graph.clj +++ b/src/clojure/contrib/graph.clj @@ -13,6 +13,7 @@ ;; straszheimjeffrey (gmail) ;; Created 23 June 2009 + (ns clojure.contrib.graph (use [clojure.set :only (union)])) @@ -68,13 +69,11 @@ ([g n] (lazy-walk g [n] #{})) ([g ns v] - (lazy-seq (let [s (seq ns) + (lazy-seq (let [s (seq (remove v ns)) n (first s) - ns (rest ns)] + ns (rest s)] (when s - (if (v n) - (lazy-walk g ns v) - (cons n (lazy-walk g (concat (get-neighbors g n) ns) (conj v n))))))))) + (cons n (lazy-walk g (concat (get-neighbors g n) ns) (conj v n)))))))) (defn transitive-closure "Returns the transitive closure of a graph. The neighbors are lazily computed." |