Ich versuche, etwas Verhalten zu verstehen, das ich in Clojure bemerkt habe.Clojure Let erlaubt mehrere Bindungen mit dem gleichen Namen
Es ist möglich, ein let-Bindung mit dem gleichen Bindungs-Namen mehrere Male wiederholt zu erstellen:
(let [a 1 a 2 a b] a)
; (= a 2)
(let [a 1 a 2 a 3] a)
; (= a 3)
ich, dass Bindungen verstehen läßt ausgewertet werden, und das macht alles meist Sinn.
Mein Verständnis von der Dokumentation ist, dass "Locals erstellt mit Let sind keine Variablen. Einmal erstellt ihre Werte nie ändern!"
Ändert die obige Syntax tatsächlich den Wert der Bindungen?
Das fühlt sich an, als ob es einen Fehler verursachen sollte.
Als eine Art Randnotiz:
Interessanter können Sie die Ausgabe der oben als JS mit clojurescript:
var a__36584 = 1, b__36585 = 2, a__36586 = b__36585;
var a__30671 = 1, a__30672 = 2, a__30673 = 3;
Hier können wir sehen, dass die Werte alle tatsächlich verschiedene Variablen sind, welche Punkte auf, was geschieht unter der Decke, aber eine Klärung wäre sehr hilfreich.