Bueno, en realidad son muy diferente. '1
es, sin embargo, exactamente igual que (quote 1)
. (car ''x)
evalúa el símbolo 'quote'.
1
es una expresión S, es la representación externa de un dato, un número 1. Decir que 1
es un 'objeto-número' o una expresión S para ingresar a ese objeto sería aceptable. A menudo se dice que 1
es la representación externa del objeto numérico real.
(quote 1)
es otra expresión-S, es un S-expresión para una lista cuyo primer elemento es el símbolo 'cita' y cuyo segundo elemento es el número 1. Esto es en donde está ya diferentes palabras clave, sintácticas, a diferencia funciones, no se consideran objetos en el lenguaje y no los evalúan.
Sin embargo, ambas son representaciones externas de objetos (datos) que evalúan con el mismo datum. El número cuya representación externa es 1
, sin embargo, no son los mismos objetos, el mismo código, el mismo dato lo mismo, simplemente evalúan exactamente lo mismo. Los números se evalúan a sí mismos. Decir que son lo mismo es decir que:
(+ 1 (* 3 3))
Y
(if "Strings are true" (* 5 (- 5 3)) "Strings are not true? This must be a bug!")
son 'lo mismo', no son, ambos son diferentes programas que acaba de pasar a terminar con el mismo valor, una forma de ceceo es también un programa, una forma es un dato que también es un programa, recuerde.
Además, me enseñaron un truco muy útil una vez que se demuestra que los datos auto-evaluación no son verdaderamente símbolos cuando entraron:
(let ((num 4))
(symbol? num) ; ====> evaluates to #f
(symbol? 'num) ; ====> evaluates to #t
(symbol? '4) ; ====> evaluates to #f
(symbol? '#\c) ; #f again, et cetera
(symbol? (car ''x)) ; #t
(symbol? quote) ; error, in most implementations
)
datos auto evaluación verdaderamente se evalúan a sí mismos, no son 'símbolos predefinidos' de algunos géneros
He entrado en un montón de detalles respondiendo básicamente la misma pregunta aquí: http://stackoverflow.com/questions/2297452/using-quote-in-clojure - tal vez esa respuesta podría ser útil para usted. –