【发布时间】:2016-09-19 11:43:04
【问题描述】:
为什么会这样
(def fibs (cons 0 (cons 1 (lazy-seq (map + fibs (rest fibs))))))
(take 10 fibs)
而这另一个
(def fibs (lazy-seq (cons 0 (cons 1 (map + fibs (rest fibs))))))
(take 10 fibs)
生成 StackOverflowError?
【问题讨论】:
-
您想通过
lazy-seq实现什么目标?如果您将其删除,它似乎运行良好。 -
@jmargolisvt 在我的 repl (clojure 1.6) 上,代码 ` (def fibs (cons 0 (cons 1 (map + fibs (rest fibs)))))` 不起作用。我认为 Lazy-seq 是必要的,因为它会延迟流的计算,否则它将无法根据 fibs 本身定义 fibs