2

第13 章超越列表:实用 Common Lisp的 Cons 单元的其他用途指出,由返回的树的副本和原始树本身共同引用的对象是数字 5、6 和符号。((1 2) (3 4) (5 6))COPY-TREENIL

我觉得这很令人困惑,因为我认为数字 1、2、3 和 4 也经常被引用。因为数字是不可变的。

我的假设错了吗?

如果是这样,那么为什么不经常引用数字 1、2、3 和 4?

4

1 回答 1

1

这意味着源中的每个 cons 单元都没有被引用,而是在结果中变得新鲜。所有不是缺点的东西都只是参考。

是的,数字是不可变的,但是适合指针的低数字实际上并不是一个对象,因为数据是在地址中编码的。在任何情况下,只要它本身不是一个 cons 单元格, carand中的“指针地址”cdr就会被复制到一个新cons的 in中。copy-tree

copy-list是相同的,只是它只cdrcar. 它只是被引用,即使它只是缺点。

于 2014-02-28T21:17:21.630 回答