From 49ed66aaf3bf39375b874d8ce97809c4b9b79c20 Mon Sep 17 00:00:00 2001 From: Jason Voegele Date: Sat, 24 Dec 2016 09:30:09 -0500 Subject: [PATCH] Use tree-seq to make iterate-dir lazy --- src/me/raynes/fs.clj | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/me/raynes/fs.clj b/src/me/raynes/fs.clj index cd20a13..775d0eb 100644 --- a/src/me/raynes/fs.clj +++ b/src/me/raynes/fs.clj @@ -414,9 +414,8 @@ (.listFiles f)) (defn- iterate-dir* [path] - (let [root (file path) - nodes (butlast (iterzip (zip/zipper f-dir? f-children nil root)))] - (filter f-dir? nodes))) + (let [root (file path)] + (filter f-dir? (tree-seq f-dir? f-children root)))) (defn- walk-map-fn [root] (let [kids (f-children root) @@ -425,7 +424,7 @@ [root dirs files])) (defn iterate-dir - "Return a sequence `[root dirs files]`, starting from `path` in depth-first order" + "Return a lazy sequence `[root dirs files]`, starting from `path` in depth-first order" [path] (map walk-map-fn (iterate-dir* path)))