(class (range 10))
;=> clojure.lang.LazySeq
(class (seq (range 10))
;=> clojure.lang.ChunkedCons
据我了解,LazySeq已经是一个序列,因为:
(seq? (range 10))
;=> true
最佳答案
我想我有一个答案。
这是因为使用seq
会强制评估LazySeq
的第一个元素。因为当collection&sequence为空时seq
返回nil
,因此必须评估该元素才能确定。
这就是rest
比next
懒惰的确切原因,因为(next s)
只是(seq (rest s))
。
关于clojure - 为什么在LazySeq上应用seq会返回ChunkedCons?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12423786/