(class (range 10))
;=> clojure.lang.LazySeq

(class (seq (range 10))
;=> clojure.lang.ChunkedCons

据我了解,LazySeq已经是一个序列,因为:
(seq? (range 10))
;=> true

最佳答案

我想我有一个答案。

这是因为使用seq会强制评估LazySeq的第一个元素。因为当collection&sequence为空时seq返回nil,因此必须评估该元素才能确定。

这就是restnext懒惰的确切原因,因为(next s)只是(seq (rest s))

关于clojure - 为什么在LazySeq上应用seq会返回ChunkedCons?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12423786/

10-10 19:34