问题在标题中。下面我复制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个参数。当没有提供集合。