在Clojure中传递一个带参数作为参数的函数

时间:2013-07-01 13:33:41

标签: function parameters clojure higher-order-functions

我有这个函数,它将一组函数作为参数:

(defn- main-func
  [fn-list]
...)

我通常称之为:

(main-func [f1 f2 ...])

f1f2都是无参数函数。如何在此调用中包含带参数的函数? 我搜索谷歌但没有成功。感谢

2 个答案:

答案 0 :(得分:5)

带参数的函数,例如

(defn foo [w x y z] ...)

可以由包含参数的匿名函数包装,例如

#(foo 1 2 3 4)

答案 1 :(得分:4)

除了A. Webb建议的anon函数之外,你可以使用给定fn的函数partial创建另一个已经设置了一些参数的fn。如果指定了所有参数,它将返回一个你可以调用的没有参数的fn:

 (def plus-12 (partial + 1 2))
 (plus-12) => 3
 (plus-12 3) => 6