【发布时间】:2014-01-30 04:49:58
【问题描述】:
我试图理解的代码由两个函数组成:
(defn fib-step [[a b]]
[b (+ a b)])
我很确定我已经弄清楚了。它使用宏 (defn) 创建一个命名函数 (fib-step),该函数接受 n 个参数。然后它将这些参数解构为两个变量,a 和 b。它首先返回一个由 b 组成的向量,然后将 a 和 b 相加。
我现在正在尝试使用此功能:
(defn fib-seq []
(map first (iterate fib-step [0 1])))
同样,它使用宏来创建命名函数 fib-seq。我想我理解使用 [0 1] 向量播种的迭代函数,但我对 map 和 first 函数感到困惑。
我知道 map 需要一个函数和一个序列,那么为什么他们使用“first”呢?
为什么我不能写
(take 5 (iterate fib-step [0 1]))
要获取惰性序列中的前 5 个数字?这张地图的目的是什么?
抱歉问了这么一个基本问题:(
【问题讨论】:
标签: clojure