मैं क्लोजर में कुछ व्यवहार को समझने की कोशिश कर रहा हूं।क्लोजर एक ही नाम के साथ कई बाइंडिंग्स को अनुमति देता है
(let [a 1 a 2 a b] a)
; (= a 2)
(let [a 1 a 2 a 3] a)
; (= a 3)
मैं समझता हूँ कि चलो बाइंडिंग मूल्यांकन किया जाता है, और यह सब ज्यादातर समझ में आता है:
यह एक लेट ही बंधन-नाम के साथ बाध्यकारी बनाने के लिए संभव है कई बार दोहराया।
दस्तावेज़ों से मेरी समझ यह है कि "चलो के साथ बनाए गए स्थानीय चर नहीं हैं। एक बार उनके मूल्य कभी नहीं बदलते!"
क्या उपर्युक्त वाक्यविन्यास वास्तव में बाइंडिंग के मूल्य को बदलता है?
ऐसा लगता है कि इसे एक त्रुटि उठानी चाहिए।
ओर टिप्पणी के एक प्रकार के रूप में:
दिलचस्प बात यह है कि आप कर सकते उत्पादन clojurescript साथ जे एस के रूप में ऊपर:
var a__36584 = 1, b__36585 = 2, a__36586 = b__36585;
var a__30671 = 1, a__30672 = 2, a__30673 = 3;
यहाँ हम है कि मूल्यों सब वास्तव में अलग चर, जो की ओर इशारा कर रहे हैं देख सकते हैं कवर के तहत हो रहा है, लेकिन कुछ स्पष्टीकरण बहुत उपयोगी होगा।