Zoeken…


Syntaxis

  • (quote object) -> object

Opmerkingen

Er zijn enkele objecten (bijvoorbeeld trefwoordsymbolen) die niet hoeven te worden geciteerd, omdat ze zichzelf evalueren.

Eenvoudig citaatvoorbeeld

Quote is een speciale operator die de evaluatie van zijn argument voorkomt. Het geeft zijn argument terug, niet geëvalueerd.

CL-USER> (quote a)
A

CL-USER> (let ((a 3))
           (quote a))
A

'is een alias voor de speciale operator QUOTE

Het notatie 'thing is gelijk aan (quote thing) .

De lezer zal de uitbreiding doen:

> (read-from-string "'a")
(QUOTE A)

Citeren wordt gebruikt om verdere evaluatie te voorkomen. Het geciteerde object evalueert zichzelf.

> 'a
A

> (eval '+ 1 2)
3

Als geciteerde objecten destructief worden gewijzigd, zijn de gevolgen niet gedefinieerd!

Vermijd destructieve bewerkingen op geciteerde objecten. Geciteerde objecten zijn letterlijke objecten. Ze zijn mogelijk op de een of andere manier in de code ingebed. Hoe dit werkt en de effecten van wijzigingen zijn niet gespecificeerd in de Common Lisp-standaard, maar het kan ongewenste gevolgen hebben, zoals het wijzigen van gedeelde gegevens, proberen om tegen schrijven beveiligde gegevens te wijzigen of onbedoelde bijwerkingen te creëren.

(delete 5 '(1 2 3 4 5))

Objecten citeren en zelf evalueren

Merk op dat veel gegevenstypen niet hoeven te worden geciteerd, omdat ze zichzelf evalueren. QUOTE is met name handig voor symbolen en lijsten, om evaluatie als Lisp te voorkomen.

Voorbeeld voor andere datatypes die niet moeten worden geciteerd om evaluatie te voorkomen: tekenreeksen, getallen, tekens, CLOS-objecten, ...

Hier een voorbeeld voor tekenreeksen. De evaluatieresultaten zijn tekenreeksen, of ze nu in de bron worden vermeld of niet.

> (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")

Citeren voor de objecten is dus optioneel.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow