我对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 - Scheme
答案 0 :(得分: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表达式。