In Common Lisp, gli oggetti quotati sono dati letterali costanti. Non dovresti modificare questi dati, poiché le conseguenze sono indefinite. Possibili conseguenze sono: modifica dei dati condivisi, il tentativo di modificare i dati di sola lettura, un errore potrebbe essere segnalato, potrebbe solo lavoro, ...
Per le liste:
'(1 2 3)
Sopra è un elenco costante , che sarà costruito dal lettore e valutando se stesso, perché è citato. Se appare nel codice Lisp, un compilatore incorporerà questi dati in qualche modo nel codice FASL.
(quote (1 2 3))
è un altro modo per scriverlo.
(list 1 2 3)
questa è una chiamata della funzione Common Lisp LIST
con tre argomenti 1
, 2
e 3
. Quando viene valutato, il risultato è una nuova lista fresca (1 2 3)
.
simili:
'(1 . 2) and (cons 1 2)
'#(1 2 3) and (vector 1 2 3)
Uno è i dati letterali e l'altro è una chiamata di funzione che costruisce una struttura di dati.
fonte
2010-10-09 17:04:15
sono smettere simile, infatti, dare un'occhiata alla mia domanda [qui] (http://stackoverflow.com/questions/32927115/lisp-quote-work-internally?noredirect = 1 # comment53680808_32927115) – William