scopo variável + avaliação no Clojure

In Clojure,

(def x 3)
(eval '(prn x))

impressões 3, enquanto

(let [y 3]
   (eval '(prn y)))

(binding [z 3] (eval '(prn z)))

gere uma exceção "Não foi possível resolver var"

De acordo comhttp: //clojure.org/evaluatio, eval, load-string, etc geram namespaces temporários para avaliar seu conteúdo. Portanto, espero que nenhum dos exemplos de código acima funcione, já que(def x 3) é feito no meu namespace atual, não no criado poreval.

Por que o primeiro exemplo de código funciona e não os dois últimoComo possoeval um formulário com variáveis associadas sem usardef?

Obrigado

questionAnswers(1)

yourAnswerToTheQuestion