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

उत्पादन तुमने देखा एक समारोह परिभाषा है। इसे गोल ब्रैकेट के बीच डालने और पैरामीटर जोड़ने के लिए इसे कॉल करने के लिए पर्याप्त है।

संबंधित मुद्दे