Я пытаюсь понять поведение, которое я заметил в Clojure.
Возможно создать привязку let с одним и тем же именем привязки, повторяющимся несколько раз:
(let [a 1 a 2 a b] a)
; (= a 2)
(let [a 1 a 2 a 3] a)
; (= a 3)
Iпонимать, что пусть привязки оцениваются, а это все в основном имеет смысл.
Насколько я понимаю из документов, «Локальные объекты, созданные с помощью let, не являются переменными. После создания их значения никогда не меняются!»
Изменил ли приведенный выше синтаксис значение привязок?
Такое ощущение, что должно появиться сообщение об ошибке.
В качестве своего рода примечания:
Интересно, что вы можете вывести вышеприведенное как JS с clojurescript:
var a__36584 = 1, b__36585 = 2, a__36586 = b__36585;
var a__30671 = 1, a__30672 = 2, a__30673 = 3;
Здесь мы можем видеть, что все значения на самом деле являются различными переменными, что указывает на то, что происходит под покровом, но некоторые пояснения были бы очень полезны.