Переменная область + eval в Clojure
В Clojure,
(def x 3)
(eval '(prn x))
prints 3, тогда как
(let [y 3]
(eval '(prn y)))
а такж
(binding [z 3] (eval '(prn z)))
создать исключение «Невозможно разрешить переменную».
Согласно сhttp: //clojure.org/evaluatio, eval
, load-string
и т. д. генерируют временные пространства имен для оценки их содержимого. Поэтому я не ожидал, что ни один из приведенных выше примеров кода не будет работать, так как(def x 3)
сделано в моем текущем пространстве имен, а не в том, что созданоeval
.
eval
форма со связанными переменными без использованияdef
?Благодарность