【发布时间】:2019-04-08 16:44:27
【问题描述】:
为什么需要包装器lazy-cons?有两个函数的结果相同。
(defn seq1 [s]
(lazy-seq
(when-let [x (seq s)]
(cons (first x) (seq1 (rest x))))))
(defn seq2 [s]
(when-let [x (seq s)]
(cons (first x) (seq2 (rest x)))))
这两种情况我都得到了相同的结果,没有分块序列。
repl.core=> (first (map println (seq1 (range 1000))))
0
nil
repl.core=> (first (map println (seq2 (range 1000))))
0
nil
repl.core=> (chunked-seq? (seq2 (range 1000)))
false
repl.core=> (chunked-seq? (seq1 (range 1000)))
false
【问题讨论】:
-
你可以在这里阅读更多:braveclojure.com/core-functions-in-depth
标签: clojure