我不明白为什么这个lazy-seq会导致stackoverflow,为什么不将序列传递给dorun:
(defn very-lazy [s]
(lazy-seq
(if (seq s)
[(first s) (very-lazy (rest s))]
[])))
(dorun (very-lazy (range 200000000)))
>nil
(take 2 (very-lazy (range 20000000))
>...(1577 (java.lang.StackOverflowError
如果它是惰性的,那么take 2
应该导致惰性序列只迭代两次,为什么不会发生,为什么 dorun 有效?