Схема: CAR и CDR из списка - PullRequest
8 голосов
/ 03 июля 2010

Я не совсем понимаю, как car и cdr работают со списками. Вот пример того, что я пробовал:

(define sample (read))
(display sample)
(display (car sample))
(display (cdr sample))
(display (car (cadr sample)))
(display (cdr (cdr sample)))

При вводе значения '(A B C D E F) вот что я получаю:

'(a b c d e f)
quote
((a b c d e f))
a
()

Я не могу понять, как quote может быть car из sample. Кроме того, почему (cdr sample) выводит ((a b c d e f))?

Язык: DrScheme - R5RS - Схема

1 Ответ

17 голосов
/ 03 июля 2010

Если вы хотите просто набрать список (a b c d e f), вам нужно просто набрать (a b c d e f). Вместо этого вы набрали (quote (a b c d e f)), потому что оператор ' является коротким для (quote ...).

Ваш список буквально содержит первый элемент quote и второй элемент (a b c d e f). Конечно, когда вы пишете исходный код, вам нужно quote, чтобы предотвратить выполнение S-выражений.

...