2011-05-15 94 views
7

如果我定义返回这样的功能的函数:调用Clojure的高阶函数

(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 [email protected]> 
nil 

#<user$add_n$fn__33 [email protected]>是生成的函数的内部引用。

回答

16

简单:

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

你所看见的输出是一个函数的定义。将它放在圆括号和添加参数之间就足够了。