【发布时间】:2011-02-26 01:02:03
【问题描述】:
我正在查看一些示例 Fibonacci 序列 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,它仍然会被懒惰地评估?这仅用于缓存目的吗?
编辑:感谢您的回答。我的困惑是它可以与 REPL 中的普通 concat 一起使用,因为我以前绑定到范围内的 fibs。
【问题讨论】:
标签: clojure lazy-evaluation fibonacci infinite-sequence