2011-05-15 92 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)) 

你所看見的輸出是一個函數的定義。將它放在圓括號和添加參數之間就足夠了。