Cytowanie w Common Lisp

Ostatnio zacząłem uczyć się sekretu. Przeglądałem przykłady w książceLand of Lisp i czułem, że wszystko rozumiem raczej dobrze, aż doszedłem do następującego przykładu w rozdziale 7:

(defun quote-it (x)
  (list 'quote x))

Teraz to wiemlist utworzy listę z jej argumentami, jak w(list 1 2 3 4) oceni na listę(1 2 3 4).

I ja też to wiemquote pozwala mi zacytować argument, zupełnie jak mogę to zrobić'. A więc'east jest taki sam jak(quote east)

Co ciekawe, powyższa funkcja nie zwraca listy, ale po prostu cytuje to, co do niej przekazuję. I tak, jeśli to nazywam

(quote-it east) to po prostu powróci'east i nie('east)

Gdybym to zrobił, napisałbym funkcję jako

(defun quote-it (x) 
  (quote x))

Więc nie mam pojęcia, dlaczego piszemy polecenie jako'quote w(list 'quote x) w przykładzie z książki.

Wiem, że mogę przełączać się między kodem a danymi, używając cytatów, takich jak'(+ 1 2), ale w tym przypadku wygląda na to, że zamierzam zastosować tutaj funkcję cytowania. Więc dlaczego(list 'quote x)?

Czy ktoś, kto ma więcej doświadczenia, może to wyjaśnić?

questionAnswers(4)

yourAnswerToTheQuestion