gpt4 book ai didi

lisp - 为什么使用 cons 创建一对两个列表会产生一个列表和两个元素?

转载 作者:太空宇宙 更新时间:2023-11-03 18:37:35 30 4
gpt4 key购买 nike

我开始学习 Scheme,主要是为了好玩,而且因为我以前从未使用过函数式语言。我选择 Scheme 是因为我想阅读 SICP很长一段时间。

不管怎样,我目前正在学习列表,在此之前我学习了cons、car和cdr。并且有一个示例创建了一个包含缺点的列表列表,如下所示:

(cons (list 1 2) (list 3 4))

结果列表是 ((1 2) 3 4),这对我来说没有意义,我希望 ((1 2)(3 4)) 是结果(由两个列表组成的列表).为什么会这样?我意识到如果我要使用 car,我会得到 (1 2),而 cdr 我会得到 (3 4) 因为 cdr 总是返回“其余部分”,但我不明白为什么没有列出列表两个列表?

最佳答案

您得到一个列表,其中 (1 2) 作为第一个元素(汽车),(3 4) 作为其余元素(cdr),因为第一个参数to cons 是列表的第一个元素,第二个参数是包含剩余项目的列表。

这非常类似于列表的结构:(适当的)列表的每个节点包含一个元素和一个包含所有其他元素的列表。 cons 创建了一个这样的节点。

如果 cons 的第二个参数成为列表的第二个元素,您将如何创建一个包含三个参数的列表?那时你必须使 cons 可变,它只是 list 的另一个名称。

如果你想创建一个列表列表使用(list (list 1 2) (list 3 4))

关于lisp - 为什么使用 cons 创建一对两个列表会产生一个列表和两个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3022488/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com