common-lisp
Citat
Sök…
Syntax
- (citat objekt) -> objekt
Anmärkningar
Det finns några objekt (till exempel nyckelordssymboler) som inte behöver anges eftersom de utvärderar för sig själva.
Enkelt citat exempel
Citat är en speciell operatör som förhindrar utvärdering av dess argument. Det returnerar sitt argument, obevärderat.
CL-USER> (quote a)
A
CL-USER> (let ((a 3))
(quote a))
A
'är ett alias för den speciella operatören QUOTE
Notationens 'thing
är lika med (quote thing)
.
Läsaren kommer att göra utvidgningen:
> (read-from-string "'a")
(QUOTE A)
Citat används för att förhindra ytterligare utvärdering. Det citerade objektet utvärderar till sig själv.
> 'a
A
> (eval '+ 1 2)
3
Om citerade föremål ändras destruktivt, definieras konsekvenserna!
Undvik destruktiva åtgärder på citerade objekt. Citerade objekt är bokstavliga objekt. De är eventuellt inbäddade i koden på något sätt. Hur detta fungerar och effekterna av modifieringar är ospecificerade i Common Lisp-standarden, men det kan ha oönskade konsekvenser som att modifiera delad data, försöka ändra skrivskyddad data eller skapa oavsiktliga biverkningar.
(delete 5 '(1 2 3 4 5))
Citera och självutvärdera objekt
Observera att många datatyper inte behöver citeras, eftersom de utvärderar för sig själva. QUOTE
är särskilt användbart för symboler och listor för att förhindra utvärdering som Lisp-former.
Exempel för andra datatyper som inte behövdes citeras för att förhindra utvärdering: strängar, siffror, tecken, CLOS-objekt, ...
Här ett exempel för strängar. Utvärderingsresultaten är strängar, oavsett om de citeras i källan eller inte.
> (let ((some-string-1 "this is a string")
(some-string-2 '"this is a string with a quote in the source")
(some-string-3 (quote "this is another string with a quote in the source")))
(list some-string-1 some-string-2 some-string-3))
("this is a string"
"this is a string with a quote in the source"
"this is another string with a quote in the source")
Att citera för objekten är således valfritt.