私はClojureで気づいたいくつかの動作を理解しようとしています。Clojureは同じ名前の複数のバインディングを許可します
同じ結合名とletバインディングを作成することが可能であるが、複数回繰り返さ:
(let [a 1 a 2 a b] a)
; (= a 2)
(let [a 1 a 2 a 3] a)
; (= a 3)
私はバインディングが評価させて理解し、これは、すべてのほとんどは理にかなっています。
ドキュメントから私の理解は、「letで作成されたローカルは変数ではなく、一度作成された値は決して変更されません」ということです。
上記の構文は実際にバインディングの値を変更しますか?
これはエラーが発生するように感じます。サイドノートの一種として
:
興味深いことに、あなたがclojurescriptとJSとして出力上記のことができます:ここで
var a__36584 = 1, b__36585 = 2, a__36586 = b__36585;
var a__30671 = 1, a__30672 = 2, a__30673 = 3;
我々は値が何を指して、すべての実際の個別の変数、あることがわかりますカバーの下で起こっているが、いくつかの明確化は非常に役立つだろう。