Otrzymuję dziwne zachowanie podczas sprawdzania, czy symbol może zostać rozwiązany.Clojure: postanowienie deklaruje symbol
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
Czy ktoś może mi powiedzieć, skąd to może pochodzić? Czy to zachowanie jest zamierzone?
Jaką wersję Clojure używasz? Nie widzę tego na 1.2.1 – spacemanaki
@ spacemanaki: Interesujące, właśnie to powtórzyłem w 1.2.1 i 1.3. Coś dziwnego dzieje się na pewno. –
Mój błąd, drugie odniesienie do "ok" spowodowało wyjątek zamiast zwrócić obiekt '#' i nie zwróciłem uwagi. Dla mnie, na 1.2.1 '(rozwiązać 'ok)' wewnątrz 'if' nie powoduje zadeklarowania' ok'. –
spacemanaki