In Common Lisp sind in Anführungszeichen gesetzte Objekte konstante Literaldaten. Sie sollten diese Daten nicht ändern, da die Konsequenzen nicht definiert sind. Mögliche Folgen sind: Änderung von gemeinsam genutzten Daten, Versuch Nur-Lese-Daten zu ändern, könnte ein Fehler gemeldet werden, es könnte funktionieren, ...
Für Listen:
'(1 2 3)
Oben ist eine Konstante Liste , die vom Leser konstruiert und zu sich selbst ausgewertet werden, weil es zitiert wird. Wenn es in Lisp-Code erscheint, wird ein Compiler diese Daten irgendwie in den FASL-Code einbetten.
(quote (1 2 3))
ist eine andere Möglichkeit, es zu schreiben.
(list 1 2 3)
dies ist ein Aufruf der Common Lisp Funktion LIST
mit drei Argumenten 1
, 2
und 3
. Bei Auswertung ist das Ergebnis eine neue Liste (1 2 3)
.
Ähnliche:
'(1 . 2) and (cons 1 2)
'#(1 2 3) and (vector 1 2 3)
One ist die wörtliche Daten und der andere ist ein Funktionsaufruf, der eine solche Datenstruktur konstruiert.
Sie sind in der Tat einen Blick auf meine Frage ähnlich beenden [hier] (http://stackoverflow.com/questions/32927115/lisp-quote-work-internally?noredirect = 1 # comment53680808_32927115) – William