【问题标题】:Scheme: do these two lists have identical memory representations?方案:这两个列表是否具有相同的内存表示?
【发布时间】:2012-10-23 17:10:09
【问题描述】:

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

请看一下这两个对象:

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

它们是否具有相同的内存表示?像这样(一):

还是第一个不同?像这样(B):

那么...什么是正确的?

【问题讨论】:

    标签: list memory scheme representation


    【解决方案1】:

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

    (cons 1
          (cons (cons 2 3)
                '()))
    
    > '(1 (2 . 3))
    

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

    (cons 1
          (cons 2 3))
    
    > '(1 2 . 3)
    

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

    【讨论】:

    • 感谢您的详细解释:)
    猜你喜欢
    • 2013-05-17
    • 2019-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多