我期待通过一些例子斐波那契序列的Clojure代码:clojure中的lazy-seq有什么意义?
(def fibs (lazy-cat [1 2] (map + fibs (rest fibs))))
我大致明白是怎么回事,但没有得到的lazy-cat
点。 我知道lazy-cat
是翻译成这样的宏:
(def fibs (concat (lazy-seq [1 2]) (lazy-seq (map + fibs (rest fibs)))))
究竟是lazy-seq
办成?即使没有lazy-seq
,它仍会被懒惰地评估?这是严格的缓存目的?
编辑:谢谢你的答案。我的困惑是,它与REPL中的普通concat
一起工作,因为我以前在范围内绑定了fibs。