Sto cercando di capire alcuni comportamenti che ho notato in Clojure.Clojure let consente più associazioni con lo stesso nome
E 'possibile creare un let vincolante con lo stesso nome-binding ripetuto più volte:
(let [a 1 a 2 a b] a)
; (= a 2)
(let [a 1 a 2 a 3] a)
; (= a 3)
Capisco che consentono attacchi vengono valutati, e questo rende tutti per lo più senso.
La mia comprensione dai documenti è che "i locali creati con let non sono variabili. Una volta creati i loro valori non cambiano mai!"
La sintassi precedente modifica effettivamente il valore dei binding?
Sembra che dovrebbe generare un errore.
come una sorta di lato nota:
Interessante è possibile l'uscita di cui sopra come JS con ClojureScript:
var a__36584 = 1, b__36585 = 2, a__36586 = b__36585;
var a__30671 = 1, a__30672 = 2, a__30673 = 3;
Qui possiamo vedere che i valori sono tutte variabili realtà distinte, che indica di quanto sta accadendo sotto le coperte, ma qualche chiarimento sarebbe molto utile.