рекурсивный (doall) в clojure - PullRequest
6 голосов
/ 01 августа 2009

У меня есть несколько структур с вложенными ленивыми последовательностями, которые читают из файлов. При тестировании я хотел бы иметь возможность обернуть их в рекурсивную версию doall, чтобы убедиться, что все данные извлекаются из файлов до , когда файлы закрываются.

Ответы [ 3 ]

5 голосов
/ 12 августа 2009
(defn doall* [s] (dorun (tree-seq seq? seq s)) s)
5 голосов
/ 02 августа 2009
(defn doall-recur [s]
  (if (seq? s)
    (doall (map doall-recur
                s))
    s))

(use 'clojure.contrib.duck-streams)
(with-open [r1 (reader "test1.txt")
            r2 (reader "test2.txt")]
  (doall-recur (list (line-seq r2) (line-seq r1))))

Выход:

(("This is test2.txt" "") ("This is test1.txt" ""))
0 голосов
/ 29 августа 2015

Это сработало для меня в модульном тесте

(use 'clojure.walk)
(postwalk identity nested-lazy-thing)
...