Scheme语言:列表的CAR和CDR

8

我对列表上的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
()

我无法理解为什么quote可以成为samplecar。而且,为什么(cdr sample)会输出((a b c d e f))

语言:DrScheme - R5RS - Scheme

1个回答

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表达式被执行。

谢谢。我是一个完全的Scheme新手。这很有帮助! - name_masked

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接