方案:列表的CAR和CDR

nam*_*ked 8 lisp scheme list racket

我对列表的工作方式car和cdr工作感到困惑.这是我尝试过的一个例子:

(define sample (read))
(display sample)
(display (car sample))
(display (cdr sample))
(display (car (cadr sample)))
(display (cdr (cdr sample)))
Run Code Online (Sandbox Code Playgroud)

在输入值时'(A B C D E F),我得到的是:

'(a b c d e f)
quote
((a b c d e f))
a
()
Run Code Online (Sandbox Code Playgroud)

我无法理解那怎么quote可能是car的sample.另外,为什么(cdr sample)输出((a b c d e f))?

语言:DrScheme - R5RS - Scheme

erj*_*ang 17

如果您只想输入列表(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表达式被执行.