我想了解一个懒惰的序列的行为,如果我重复的进行doseq
但稳守第一要素的一部分。
(with-open [log-file-reader (clojure.java.io/reader (clojure.java.io/file input-file-path))]
; Parse line parse-line returns some kind of representation of the line.
(let [parsed-lines (map parse-line (line-seq log-file-reader))
first-item (first parsed-lines)]
; Iterate over the parsed lines
(doseq [line parsed-lines]
; Do something with a side-effect
)))
我不想保留任何名单,我只是想执行与每个元素的副作用。 我相信,如果没有first-item
就没有问题。
我有我的程序内存的问题,我想,也许保留在开始一个参考的东西parsed-line
序意味着整个序列存储。
什么是这里定义的行为? 如果正在存储的序列,有没有采取对象的副本,使该序列的实现部分被垃圾收集一个通用的方法?