1
19
cons单元格通常有两个指针,可以指向任何东西。当然,一般的用法是指向左边的“value”,指向右边的另一个cons单元格(或nil)。 |
2
13
cons单元比链表节点更接近二叉树节点。car和cdr返回两个孩子,可以是nil、atoms或其他cons单元。 |
3
7
在Lisp中,cons单元格包含一对值。如果cons单元格在变量中
按照惯例,列表由cons单元格组成,其中
因此,对于列表
|
4
5
一
从这个定义中省略“引用”、“指针”等词的原因是要认识到这些是实现细节。如果你想,你可以建立一个
这个定义完全生活在Lisp定义和函数的世界中,甚至不停地考虑对象是作为值还是引用存储的;但是这些定义可以作为原始对象的替代品(不考虑可变性或其他特殊用途)。 |
5
3
我认为这里的其他答案虽然准确,但一点都不明确。
在传统的C++链表实现中,这两个字段(
lisp是动态类型的,因此cons单元格中的任何字段都可以
任何东西
(原子或参考)。您可以实现一个带有cons单元格的链接列表(这就是lisp列表的全部内容:带有
您甚至可以组合这些内容;例如
因此,cons单元比链表节点更一般;可以说,它更接近于“应用对”。所有标准列表处理功能(
所有这一切意味着,如果你愿意,你可以定义列表
向后的
用
|
ptb · Slime\Emacs comint在启动mpi进程时挂起 6 年前 |
Alexandru Popa · SBCL中奇怪的宏扩展错误 6 年前 |
MadPhysicist · 公共Lisp未定义分派字符 6 年前 |
Jacky · 编辑列表中的每个偶数索引元素 6 年前 |
Jorge · 在公共Lisp中初始化计数器变量 6 年前 |
Rorschach · cl循环破坏性修改cons单元 6 年前 |
Rorschach · 宏在定义时将关键帧视为true 6 年前 |
reverload · 空调内部let工作不正常 6 年前 |