Tôi có một số cấu trúc với chuỗi lồng nhau lười biếng đọc từ tệp. Khi tôi đang thử nghiệm, tôi muốn có thể bọc chúng trong một phiên bản đệ quy của doall để đảm bảo tất cả dữ liệu được lấy từ các tệp trước khi các tệp bị đóng.đệ quy (doall) trong clojure
6
A
Trả lời
5
(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))))
Output:
(("This is test2.txt" "") ("This is test1.txt" ""))
5
(defn doall* [s] (dorun (tree-seq seq? seq s)) s)
0
này làm việc cho tôi trong một thử nghiệm đơn vị
(use 'clojure.walk)
(postwalk identity nested-lazy-thing)
Chúng ta có nên giả 's' cần phải là một phiên bản được trích dẫn của mã mà 'doall *' sẽ áp dụng? – matanster
No. Tại sao bạn lại nghĩ vậy? – cgrand