En Common Lisp, les objets entre guillemets sont des données littérales constantes. Vous ne devez pas modifier ces données, car les conséquences ne sont pas définies. Conséquences possibles sont les suivants: modification des données partagées, essayez de modifier les données en lecture seule, une erreur peut être signalé, il pourrait fonctionner ...
Pour les listes:
'(1 2 3)
Au-dessus est une liste constante , qui sera construit par le lecteur et évaluant à lui-même, parce qu'il est cité. S'il apparaît dans le code Lisp, un compilateur intégrera ces données d'une manière ou d'une autre dans le code FASL.
(quote (1 2 3))
est une autre façon de l'écrire.
(list 1 2 3)
ceci est un appel de la fonction Common Lisp LIST
avec trois arguments 1
, 2
et 3
. Une fois évalué le résultat est une nouvelle liste fraîche (1 2 3)
.
similaires:
'(1 . 2) and (cons 1 2)
'#(1 2 3) and (vector 1 2 3)
On est les données littérales et l'autre est un appel de fonction qui construit une telle structure de données.
Ils sont en fait quitter la même jeter un oeil à ma question [ici] (http://stackoverflow.com/questions/32927115/lisp-quote-work-internally?noredirect = 1 # comment53680808_32927115) – William