调用Clojure高阶函数

调用Clojure高阶函数,clojure,higher-order-functions,Clojure,Higher Order Functions,如果我定义了一个返回如下函数的函数: (defn add-n [n] (fn [x] (+ x n))) 然后,我可以将结果指定给符号: (def add-1 (add-n 1)) 并称之为: (add-1 41) ;=> 42 如何调用(add-n 1)的结果而不将其分配给新符号?以下操作将生成此输出: (println (add-n 1)) #<user$add_n$fn__33 user$add_n$fn__33@e9ac0f5> nil (println

如果我定义了一个返回如下函数的函数:

(defn add-n
  [n]
  (fn [x] (+ x n)))
然后,我可以将结果指定给符号:

(def add-1 (add-n 1))
并称之为:

(add-1 41)
;=> 42
如何调用
(add-n 1)
的结果而不将其分配给新符号?以下操作将生成此输出:

(println (add-n 1))
#<user$add_n$fn__33 user$add_n$fn__33@e9ac0f5>
nil
(println(add-n 1))
#
无
#
是生成函数的内部引用。

简单:

(println ((add-n 1) 41))
您看到的输出是一个函数定义。把它放在圆括号中并添加一个参数就足够调用它了