如何用一些不在Clojure中使用的参数编写lambda?

spe*_*ll4 1 lambda clojure

(reduce (fn [z a] (inc z)) 0 coll)
Run Code Online (Sandbox Code Playgroud)

这个表达式用于测量长度coll,但如何将其转换fn为lambda函数?注意参数a不在fn身体中使用,我已经尝试#(inc %1)但它不起作用.

obm*_*arg 5

Clojure通过查找%其正文中最大的编号参数来计算lambda函数应该采用多少个参数.在你的情况下使用#(inc %1)不起作用,因为它将创建一个接受一个参数的函数,但reduce需要一个接受两个参数的函数.

如果您定义的函数不使用其后一个参数,那么您应该坚持使用fn表单.

  • `(mapcat#(vector%1%1)[1 2 3])`如果你看一下`(macroexpand'#([%1%1]))`你会看到它的作用以及我使用的原因` VECTOR` (2认同)