我正在使用R5RS标准的Scheme语言。
请看看这两个对象:
(1 (2 . 3))
(1 2 . 3)
他们有相同的记忆表示吗?像这样(A):
或者第一个是不同的?像这样(B):
那么......什么是正确的?
答案 0 :(得分:5)
他们是不同的。第一个列表是这样构造的,对应于“B”图:
(cons 1
(cons (cons 2 3)
'()))
> '(1 (2 . 3))
而第二个列表结构是这样构造的,它对应于“A”图:
(cons 1
(cons 2 3))
> '(1 2 . 3)
另请注意,第二个不是正确列表(意思是:以null
结尾的列表。)