我喜欢Clojure.困扰我的一个问题是我不知道如何实现懒惰的序列,或者它们是如何工作的.
我知道懒惰序列只评估序列中要求的项目.它是如何做到的?
阅读最近的一个问题,我确定了正在讨论的功能
(def fib-seq
(lazy-cat [0 1] (map + (rest fib-seq) fib-seq)))
Run Code Online (Sandbox Code Playgroud)
虽然抓住了一个序列的头部,但是我想到了重新阅读我的答案,我已经掩盖了细节,就像他们很明显一样,所以我回过头来澄清并且做得很短.我知道fib-seq是一个var,只要它在它周围就能保存序列中的所有元素,但我根本不清楚序列是如何被保持的确切机制.任何澄清将不胜感激.