调用Clojure高阶函数

时间:2011-05-15 13:49:24

标签: 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 的结果?以下产生此输出:

#<user$add_n$fn__33 user$add_n$fn__33@e9ac0f5>

{{1}}是对生成函数的内部引用。

1 个答案:

答案 0 :(得分:16)

易:

(println ((add-n 1) 41))

您看到的输出是函数定义。将它放在圆括号之间并添加参数就足以称之为。