Estoy tratando de entender algún comportamiento que he notado en Clojure.Clojure let permite enlaces múltiples con el mismo nombre
Es posible crear un let vinculante con el mismo nombre de la unión repitió varias veces:
(let [a 1 a 2 a b] a)
; (= a 2)
(let [a 1 a 2 a 3] a)
; (= a 3)
entiendo que vamos se evalúan las consolidaciones, y todo esto sobre todo tiene sentido.
Mi comprensión de los documentos es que "Los locales creados con let no son variables. Una vez creados, sus valores nunca cambian!"
¿La sintaxis anterior realmente cambia el valor de los enlaces?
Parece que debería generar un error.
Como una especie de nota al margen:
Es interesante que puede dar salida a lo anterior como JS con clojurescript:
var a__36584 = 1, b__36585 = 2, a__36586 = b__36585;
var a__30671 = 1, a__30672 = 2, a__30673 = 3;
Aquí podemos ver que los valores son todas las variables realmente distintas, lo que apunta a lo está sucediendo bajo las sábanas, pero algunas aclaraciones serían muy útiles.