Цитирование в Common Lisp
Я начал изучать язык недавно. Я изучал примеры из книгиЗемля Лисп и я чувствовал, что все довольно хорошо понимаю, пока не дошел до следующего примера в главе 7:
(defun quote-it (x)
(list 'quote x))
Теперь я знаю, чтоlist
создаст список со своими аргументами, как в(list 1 2 3 4)
оценил бы список(1 2 3 4)
.
И я также знаю, чтоquote
позволяет мне привести аргумент, так же, как я могу сделать с'
, И так'east
такой же как(quote east)
Интересно, что вышеприведенная функция не возвращает список, а просто цитирует все, что я ему передаю. И так, если я это назову
(quote-it east)
это просто вернется'east
и нет('east)
Если бы я сделал это, я написал бы функцию как
(defun quote-it (x)
(quote x))
И так, я понятия не имею, почему мы пишем команду как'quote
в(list 'quote x)
в примере из книги.
Я знаю, что могу переключаться между кодом и данными, используя кавычки, например'(+ 1 2)
, но в этом случае похоже, что я собираюсь применить здесь функцию кавычек. Итак, почему(list 'quote x)
?
Так, может кто-то там с большим опытом разъяснить это?