我正在查看一些示例斐波那契序列 clojure 代码:
(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?这是否严格用于缓存目的?
编辑:感谢您的回答。我的困惑是它可以与concatREPL 中的普通文本一起使用,因为我之前在范围内绑定了 fibs。