方案:列表的 CAR 和 CDR

发布于 2024-09-08 02:41:23 字数 518 浏览 5 评论 0原文

我对 carcdr 如何在列表上工作感到困惑。这是我尝试过的示例:

(define sample (read))
(display sample)
(display (car sample))
(display (cdr sample))
(display (car (cadr sample)))
(display (cdr (cdr sample)))

在输入值 '(ABCDEF) 时,我得到的结果如下:

'(a b c d e f)
quote
((a b c d e f))
a
()

我无法理解 quote 是如何实现的样本汽车。另外,为什么(cdr example)输出((abcdef))

语言:DrScheme - R5RS - 方案

I am confused as to how car and cdr work on lists. Here is an example of what I have tried:

(define sample (read))
(display sample)
(display (car sample))
(display (cdr sample))
(display (car (cadr sample)))
(display (cdr (cdr sample)))

On entering the value '(A B C D E F), here is what I get:

'(a b c d e f)
quote
((a b c d e f))
a
()

I am not able to understand that how quote can be the car of sample. Also, why does (cdr sample) output ((a b c d e f))?

Language: DrScheme - R5RS - Scheme

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

丶情人眼里出诗心の 2024-09-15 02:41:23

如果您想简单地键入列表 (abcdef),则只需键入 (abcdef)。相反,您输入的是 (quote (abcdef)),因为 ' 运算符是 (quote ...) 的缩写。

您的列表实际上包含第一个元素 quote 和第二个元素 (abcdef)。当然,当您编写源代码时,您需要引号来防止S表达式被执行。

If you wanted to simply type the list (a b c d e f), you should just type (a b c d e f). What you typed, instead, was (quote (a b c d e f)) because the ' operator is short for (quote ...).

Your list literally has the first element quote and the second element (a b c d e f). Of course, when you're writing source code, you need the quote to prevent the S-expressions from being executed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文