Вы цитируете внутри указанных данных. Когда Схема встречает (quote x)
или, кратко, 'x
, она оценивает ее как аргумент без изменений ..
'('(1) '(2)))
Сокращенно от:
(quote ((quote (1)) (quote (2))))
И, согласно моим установленным правилам оценки, он должен оценивать:
((quote (1)) (quote (2)))
Таким образом, если вы берете caar
или это выражение в кавычках, вы должны получить символ quote
:
(caar '('(1) '(2)))
; ==> quote
Если вы не собирались включать эти кавычки в структуру данных, вам не нужно включать их в выражение, например:
'((1) (2))
NB: Существует язык, связанный со Scheme, называемый Racket, по умолчанию в их REPL выводится не само значение, а выражение, которое будет оценивать это значение. Обычно это сбивает с толку даже опытных интриганов. Это все равно, что спросить кого-то "что такое 3 плюс 4" и ответить 1 plus 6
.