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被认为是一个“仅代码”的答案,不受欢迎。您想通过添加一些解释来改进它吗?这是如何以及为什么会有帮助的?试着强调这如何为现有的更老、解释更好、投票更高和被接受的答案提供更多的见解。请采纳并考虑建议。