有人可以解释这段clojure代码吗?

时间:2015-10-04 00:48:20

标签: clojure

我正在学习clojure,我在理解这个clojure代码时遇到问题,所以我有这个部分功能

 (def add-five (partial + 5))

当我跑步时,

(add-five 2)# I get 7
(add-five 2 5) # I get 12

首先,我提出一个论点;第二,我提出两个论点。

(map add-five [1 2 3 4 5])

这给了我

(6 7 8 9 10)

在这里,我假设,add-five正在应用列表中的元素。但是当我跑步时,

(reduce add-five [1 2 3 4 5])

,我不知道发生了什么事?

 (reduce add-five [0]) #gives me zero
 (reduce add-five [0 0]) #gives me five

有人可以解释一下我运行如上所述的减少会发生什么吗?

1 个答案:

答案 0 :(得分:6)

 (reduce add-five [0]) #gives me zero

对于此行,the documentation适用此规则:

  

如果coll只有1个项目,则返回它并且不调用f

否则,它会将add-five函数应用于00个参数:(add-five 0 0)