Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure高阶函数接受函数参数,但语法是什么?_Clojure - Fatal编程技术网

Clojure高阶函数接受函数参数,但语法是什么?

Clojure高阶函数接受函数参数,但语法是什么?,clojure,Clojure,我在做闭包教程,我被困在这里: 看起来像这样 高阶函数接受函数参数 (= 25 ( _ (fn [n] (* n n)))) 我应该在下划线处填入一些东西,使表达式为真。我不知道该怎么做。语法只是绑定函数,然后调用它 由于这是一个练习,我将展示一个类似的情况,而不是展示练习的解决方案: user> ((fn [f] (f "abc")) (fn [s] (str s s s))) "abcabcabc" 这里,我将第一个函数的参数绑定到f,并使用参数调用f“abc”,或者您可以使用简写

我在做闭包教程,我被困在这里:

看起来像这样

高阶函数接受函数参数

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

我应该在下划线处填入一些东西,使表达式为真。我不知道该怎么做。

语法只是绑定函数,然后调用它

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

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

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

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

#(%1 5)

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

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
调用高阶函数

user=> (defn highorderfn [fn number] (fn number))
#'user/highorderfn
user=> (highorderfn multiply 5)
25
user=> (highorderfn add 5)
10

因此,这个表达式的具体答案是(=25((fn[f](f5))(fn[n](*n))),对吗?我想是的,在我的回复中,它的计算结果是
true
。更简短的是:
#(%5)
这在StackOverflow被认为是一个“仅代码”的答案,不受欢迎。您想通过添加一些解释来改进它吗?这是如何以及为什么会有帮助的?试着强调这如何为现有的更老、解释更好、投票更高和被接受的答案提供更多的见解。请采纳并考虑建议。