列表中的最后一个元素在Scheme中指向什么?

列表中的最后一个元素在Scheme中指向什么?,scheme,Scheme,当我在Scheme中列出一个列表时,最后一对的cdr指向什么?它是一个“空单词”还是一个“空列表”?DrScheme不介意(cons'a空)也不介意(cons'a'())。最后,空单词和空列表之间的区别是什么 最后一对的cdr指向空列表'() 最后一对的cdr指向空列表'() 如果您计算符号为空,则可以找到您所有问题的答案。它被定义为等于”(),空列表,这是最后一个cdr指向的内容。要说服自己,请尝试以下方法: (cdr (list 1 2 3)) (cdr (cdr (list 1 2 3))

当我在Scheme中列出一个列表时,最后一对的cdr指向什么?它是一个“空单词”还是一个“空列表”?DrScheme不介意
(cons'a空)
也不介意
(cons'a'())
。最后,空单词和空列表之间的区别是什么

最后一对的cdr指向空列表'()

最后一对的cdr指向空列表'()

如果您计算符号
为空
,则可以找到您所有问题的答案。它被定义为等于
”()
,空列表,这是最后一个cdr指向的内容。要说服自己,请尝试以下方法:

(cdr (list 1 2 3))
(cdr (cdr (list 1 2 3)))
(cdr (cdr (cdr (list 1 2 3))))

如果您计算符号
为空
,则可以找到您所有问题的答案。它被定义为等于
”()
,空列表,这是最后一个cdr指向的内容。要说服自己,请尝试以下方法:

(cdr (list 1 2 3))
(cdr (cdr (list 1 2 3)))
(cdr (cdr (cdr (list 1 2 3))))

DrScheme不介意您的
cons
-ing,因为
cons
可以做的不仅仅是构建列表。从参考资料来看

(cons a d) → pair? a : any/c d : any/c 这不是一个列表,但它仍然可以让你这样做

> (car (cons 1 2))
1
> (cdr (cons 1 2))
2
但无论如何,“空单词”和“空列表”是同一个对象,可以通过

> (eq? empty '())
#t

DrScheme不介意您的
cons
-ing,因为
cons
可以做的不仅仅是构建列表。从参考资料来看

(cons a d) → pair? a : any/c d : any/c 这不是一个列表,但它仍然可以让你这样做

> (car (cons 1 2))
1
> (cdr (cons 1 2))
2
但无论如何,“空单词”和“空列表”是同一个对象,可以通过

> (eq? empty '())
#t

虽然它回答了我的一部分问题,但我刚刚意识到cdr不必指向空。我可能会有一个不合适的列表,比如(b.d)。无论如何,谢谢。虽然它回答了我问题的一部分,但我刚刚意识到cdr不必指向空。我可能会有一个不合适的列表,比如(b.d)。无论如何,谢谢。所有列表都由一系列列表组成,每个列表长度为2。例如,(1 2 3)实际上是长度为2的列表:第一项为1,第二项为(2 3)。该内部列表也是长度为2的列表:第一项为2,第二项为(3)。第二项实际上也是一个两项列表:第一项是3,第二项是()。cons('a'())返回('a),因为它实际上是('a'.())。所有列表都由一系列列表组成,每个列表的长度为2。例如,(1 2 3)实际上是长度为2的列表:第一项为1,第二项为(2 3)。该内部列表也是长度为2的列表:第一项为2,第二项为(3)。第二项实际上也是一个两项列表:第一项是3,第二项是()。cons('a'())返回('a),因为那实际上是('a')()。