方案:列表的CAR和CDR

时间:2010-07-03 19:41:57

标签: list lisp scheme racket

我对carcdr如何处理列表感到困惑。这是我尝试过的一个例子:

(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
()

我无法理解quotecar sample的影响。另外,为什么(cdr sample)输出((a b c d e f))

语言:DrScheme - R5RS - Scheme

1 个答案:

答案 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表达式。