我正在尝试阅读 Stuart Halloway 的《Programming Clojure》一书。这整个功能性的东西对我来说是非常新的。
我明白如何
(defn fibo[]
(map first (iterate (fn [[a b]] [b (+ a b)]) [0 1])))
懒惰地生成斐波那契数列。我不明白为什么
(last (take 1000000 (fibo)))
工作,而
(nth (fibo) 1000000)
引发 OutOfMemoryError。有人可以解释一下这两种表达方式有何不同吗?(nth) 是否以某种方式抓住了序列的头部?
谢谢!