(quote a)
devuelve un símbolo (clojure.lang.Symbol) - efectivamente hace lo mismo que 'a
. Vale la pena leer un poco más sobre Clojure reader para obtener más información sobre los símbolos. Ejemplo:
(quote a)
=> a
(var a)
devuelve el var (clojure.lang.Var) representado por el símbolo A en el espacio de nombres actual. Obtendrá un error si a no está definido en el espacio de nombres actual. Ejemplo:
(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
Esa es la definición técnica - pero aquí está la intuición detrás de él: un símbolo es un nombre, que puede ser utilizado para buscar una var en un espacio de nombres dado. Una var es un tipo de referencia que puede contener cualquier tipo de valor de Clojure. Entonces, un símbolo identifica una var que contiene un valor.
Considere la posibilidad de agregar en la definición de 'quote' también. Debería tener sentido. –