为什么映射转换器的结果包含大于2的误差



问题在标题中。下面我复制map:源的转换器部分

([f]
(fn [rf]
(fn
([] (rf))
([result] (rf result))
([result input]
(rf result (f input)))
([result input & inputs] ;why?
(rf result (apply f input inputs))))))

这里有一个指向clojure.core源的链接,其中包含map的定义。

map可以同时处理多个集合,为每个集合项调用一个带参数的映射函数:

(map + [1 2 3] [4 5 6])
=> (5 7 9)

对于那些集合中的每对值,例如(+ 1 4)(+ 2 5)(+ 3 6),调用+函数一次。非换能器版本如下所示。

map转换器的工作方式相同:

(sequence (map +) [1 2 3] [4 5 6])
=> (5 7 9)

[map]返回一个由将f应用于每个coll的第一项的集合,然后将f应用于每个coll中第二项的集合直到任何一个coll精疲力竭。其他列中的任何剩余项都将被忽略。作用f应接受colls个参数。当没有提供集合。

最新更新