गतिशील चर, binding
, और pmap
, उदाहरण के लिए मिश्रण करते समय सावधानी बरतने के लिए वहां कुछ हद तक पुरानी ब्लॉग पोस्ट हैं। here, जहां हम निम्नलिखित कोड का टुकड़ा मिल:बाइंडिंग और pmap इंटरैक्शन परिवर्तन?
user=> (def *foo* 5)
#'user/*foo*
user=> (defn adder
[param]
(+ *foo* param))
#'user/adder
user=> (binding [*foo* 10]
(doseq [v (pmap adder (repeat 3 5))]
(println v)))
10
10
10
nil
लेकिन वह क्या होता है जब मुझे लगता है कि कोड ((def ^:dynamic *foo* 5)
को पहली पंक्ति को बदलने) नहीं चला है। मुझे आउटपुट के रूप में तीन 15
एस मिलते हैं (क्लोजर 1.4 का उपयोग करके), जैसा कि आप — की अपेक्षा करते हैं, जो फ़ंक्शन द्वारा देखे गए बाध्यकारी रूप में परिवर्तन के साथ pmap को पास किया गया है। क्या थ्रेड-स्थानीय बाइंडिंग और pmap इंटरैक्ट बदल गया है? मुझे यह कहीं भी दस्तावेज नहीं मिल रहा है।
धन्यवाद! यह दस्तावेज कहां है? यह http://dev.clojure.org/display/doc/1.3 –
संपादन में शामिल नहीं है संदर्भ –
धन्यवाद! की सराहना की। –