Я получаю какое-то странное поведение при проверке, разрешен ли символ.Clojure: разрешение объявляет символ
user=> ok
CompilerException java.lang.RuntimeException: Unable to resolve symbol: ok in this context, compiling:(NO_SOURCE_PATH:0)
user=> (resolve 'ok)
nil
user=> (if (resolve 'ok) "bla" (def ok 'ok))
"bla"
user=> ok
#<Unbound Unbound: #'user/ok>
user=> (def ok 'ok)
#'user/ok
user=> ok
ok
Может ли кто-нибудь сказать мне, откуда это может произойти? Предполагается ли это поведение?
Какую версию Clojure вы используете? Я не вижу этого в 1.2.1 – spacemanaki
@spacemanaki: Интересно, я просто воспроизвел это как в 1.2.1, так и в 1.3. Что-то странное, безусловно, происходит. –
Моя ошибка, вторая ссылка на 'ok' привела к исключению вместо возврата объекта' #', и я не обратил внимания. Для меня, на 1.2.1 '(разрешить 'ok)' внутри 'if', приводит к объявлению' ok'. –
spacemanaki