【发布时间】:2012-10-23 17:10:09
【问题描述】:
我正在使用 R5RS 标准的 Scheme 语言。
请看一下这两个对象:
-
(1 (2 . 3)) (1 2 . 3)
它们是否具有相同的内存表示?像这样(一):
还是第一个不同?像这样(B):
那么...什么是正确的?
【问题讨论】:
标签: list memory scheme representation
我正在使用 R5RS 标准的 Scheme 语言。
请看一下这两个对象:
(1 (2 . 3)) (1 2 . 3)它们是否具有相同的内存表示?像这样(一):
还是第一个不同?像这样(B):
那么...什么是正确的?
【问题讨论】:
标签: list memory scheme representation
他们是不同的。第一个列表是这样构造的,对应“B”图:
(cons 1
(cons (cons 2 3)
'()))
> '(1 (2 . 3))
而第二个列表结构是这样构造的,对应“A”图:
(cons 1
(cons 2 3))
> '(1 2 . 3)
还要注意第二个不是正确的列表(意思是:以null结尾的列表)。
【讨论】: