(quote a)
возвращает символ (clojure.lang.Symbol) - он фактически делает то же, что и 'a
.Стоит прочитать немного больше о Clojure reader , чтобы узнать немного больше о символах.Пример:
(quote a)
=> a
(var a)
возвращает переменную (clojure.lang.Var), представленную символом a в текущем пространстве имен.Вы получите ошибку, если a не определено в текущем пространстве имен.Пример:
(var a)
=> #<CompilerException java.lang.RuntimeException: Unable to resolve var: a in this context, compiling:(NO_SOURCE_PATH:1)>
(def a 1)
(var a)
=> #'user/a
Это техническое определение, но здесь есть интуиция: символ - это имя, которое можно использовать для поиска переменной в данном пространстве имен.Сам по себе var является своего рода ссылкой, которая может содержать любой тип значения Clojure.Таким образом, символ идентифицирует переменную, которая содержит значение.