Схема: CAR и CDR списка

Я не понимаю, как 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 - Схема


person name_masked    schedule 03.07.2010    source источник


Ответы (1)


Если вы хотите просто ввести список (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-выражений.

person erjiang    schedule 03.07.2010
comment
Спасибо. Я полный новичок в Scheme. Это помогает ! - person name_masked; 04.07.2010