Clojure高阶函数采用函数参数,但语法是什么?

时间:2014-02-16 20:57:42

标签: clojure

我正在http://clojurescriptkoans.com进行关闭教程,我被困在这里:http://clojurescriptkoans.com/#functions/9

看起来像这样

高阶函数采用函数参数

(= 25 ( _ (fn [n] (* n n))))

我应该在下划线处填写一些内容以使表达式成立。我不知道该怎么做。

3 个答案:

答案 0 :(得分:31)

语法只包括绑定函数,然后调用它。

由于这是一个练习,我将展示类似的情况,而不是显示练习的解决方案:

user> ((fn [f] (f "abc")) (fn [s] (str s s s)))
"abcabcabc"

这里我将第一个函数的参数绑定到f,并使用参数f调用"abc"

答案 1 :(得分:3)

或者您可以使用简写符号:

#(%1 5)

答案 2 :(得分:0)

高阶函数将函数作为参数。 定义两个功能

user=> (defn multiply [n] (* n n))
#'user/multiply

user=> (defn add [n] (+ n n))
#'user/add

定义高阶函数

user=> (defn highorderfn [fn number] (fn number))
#'user/highorderfn

调用高阶函数

user=> (highorderfn multiply 5)
25
user=> (highorderfn add 5)
10