clojure 文档 给出了以下示例:
(take 10 (iterate (partial + 2) 0))
(def powers-of-two (iterate (partial * 2) 1))
(take 10 powers-of-two)
(def fib (map first (iterate (fn [[a b]] [b (+ a b)]) [1 1])))
(take 10 fib)
任何人都能更详细地解释Clojure的iterate函数的语法吗?我对所有用法都感到很困惑。为什么(fn [[a b]] [b (+ a b)])中有两个括号?
另一个例子可以在这里找到:
(defn iter [[x y]]
(vector y (+ x y)))
(nth (iterate iter [0 1]) 10000)