3

我正在使用 Scheme 语言的 R5RS 标准。

请看一下这两个对象:

  1. (1 (2 . 3))
  2. (1 2 . 3)

它们是否具有相同的内存表示?像这样(一): 在此处输入图像描述

还是第一个不一样?像这样(B):在此处输入图像描述

所以...什么是正确的?

4

1 回答 1

5

他们是不同的。第一个列表是这样构造的,对应“B”图:

(cons 1
      (cons (cons 2 3)
            '()))

> '(1 (2 . 3))

而第二个列表结构是这样构造的,对应于“A”图:

(cons 1
      (cons 2 3))

> '(1 2 . 3)

另请注意,第二个不是正确的列表(意思是:以 结尾的列表null)。

于 2012-10-23T17:35:58.987 回答