У меня есть символ "a"
, связанный с функцией:
(defn a []
(println "Hello, World"))
user=> a
#<user$a__292 [email protected]>
user=> (a)
Hello, World
nil
Затем я использую синтаксическую цитату, она "разрешает символ в текущем контексте, давая полностью квалифицированный символ", согласно Clojure documentation. Но почему я не могу использовать его так же, как неквалифицированный символ?
user=> `a
user/a
user=> (`a)
java.lang.IllegalArgumentException: Wrong number of args passed to: Symbol (NO_SOURCE_FILE:0)
Второй вопрос: если у меня есть символ в списке, почему я не могу его оценить так же, как если бы я сам оценил символ?
user=> (def l '(a 1 2))
#'user/l
user=> 'l
l
user=> (first l)
a
user=> ((first l))
java.lang.IllegalArgumentException: Wrong number of args passed to: Symbol (NO_SOURCE_FILE:0)
У меня есть подозрение, что у меня есть фатальная ошибка где-то в фундаментальном понимании того, как здесь работают символы. Что не так с приведенным выше кодом?