当我在Scheme中创建一个列表时,最后一对的cdr指向什么?这是一个'空单词'还是'空单'? DrScheme不介意(cons 'a empty)
和(cons 'a '())
。最后,空白词和空白列表有什么区别?列表中最后一个元素指向Scheme的是什么?
1
A
回答
4
DrScheme不介意你cons
-ing,因为cons
可以做的不仅仅是建立名单。从参考,
(cons a d) → pair? a : any/c d : any/c
这意味着cons
建立配对。这也是完全合法的做
> (cons 1 2)
(1 . 2)
这不是一个名单,但仍然可以让你做
> (car (cons 1 2))
1
> (cdr (cons 1 2))
2
但不管怎么说,“空字”和“空列表”是同一个对象,可以通过检查
> (eq? empty '())
#t
1
最后一对的cdr指向'(),空列表。
1
如果您评估符号empty
,可以找到您所有问题的答案。它被定义为等于'()
,空列表,这是最后一个cdr指向的内容。要说服自己,试试这个:
(cdr (list 1 2 3))
(cdr (cdr (list 1 2 3)))
(cdr (cdr (cdr (list 1 2 3))))
相关问题
- 1. 检查元素是否是列表中的最后一个
- 2. “指向最后一个元素的指针”更漂亮,std :: vector?
- 3. 指向数组的指针,为什么这是最后一个元素的地址?
- 4. 为什么OCaml中的list不保持指向最后一个元素的指针?
- 5. 为什么scrollspy(bootstrap)总是跳转到最后一个元素
- 6. 列表的最后一个元素转移到列表
- 7. 从angularjs中删除列表中的最后一个元素
- 8. 将列表中的最后一个元素保留在val中
- 9. Scheme - 将列表中的每个元素转换为列表(列表列表)
- 10. 判断一个元素是否在列表中的另一个元素之后
- 11. 列表的第一个和最后一个元素OCaml
- 12. 获取一个/列表/数组的最后一个元素
- 13. 为什么Web元素只在一个列表中的一个元素?
- 14. 反向列表的最后两个元素在序言
- 15. 序言总结的最后一个元素列表中的
- 16. ASP.NET - Foreach最后一个元素出现在整个列表中
- 17. 使用float后列表的最后一个元素:right
- 18. 检查列表中对象数组的最后一个元素
- 19. 忽略逗号分隔列表中的最后一个元素
- 20. 调整视图中的最后一个元素(列表视图)
- 21. 加入列表中的最后一个元素
- 22. 匹配分隔列表中的最后一个元素?
- 23. 循环中列表的最后一个元素
- 24. 向另一个列表中的列表添加唯一元素
- 25. 什么是只有一个元素的列表名称
- 26. R:访问每个元素的最后一个子元素的列表
- 27. 在最后一个列表上创建一个元素
- 28. 如何删除一个元素的形式列表使用C++中的指针指向这个元素
- 29. 找到第k个链接列表的最后一个元素
- 30. 乘以列表中的每个元素与Scheme编程
为什么(缺点是空的)工作? – unj2 2009-06-04 16:37:04
所有列表均由一系列列表组成,每个列表的长度均为2.例如,(1 2 3)实际上是长度为2的列表:第一个项目为1,第二个项目为(2 3)。内部列表也是长度为2的列表:第一个项目是2,第二个项目是(3)。第二个项目实际上也是两个项目列表:第一个项目是3,第二个项目是()。因此,cons('a'())返回('a),因为那实际上是('a。'())。 – 2009-06-04 16:45:26