【问题标题】:Creating lists in various ways以各种方式创建列表
【发布时间】:2021-05-25 22:56:02
【问题描述】:

我可以通过以下所有方式创建单元素列表(2)

'(2)      
(list 2)  
(cons 2 nil)

但是,为什么下面会报错呢?

(2 . nil)

方案中没有“标量空”值这样的东西吗?还是有其他方法可以做到这一点?

【问题讨论】:

    标签: scheme lisp racket sicp


    【解决方案1】:

    (2 . '()) 确实代表了单例列表'(2):后者是前者的简写。问题是,如果您在与(cons 2 '()) 相同的上下文中使用它,则会出现错误。为什么?如果您尝试评估(2),您会得到同样的错误!这意味着将2 作为函数调用,不传递任何参数。

    如果您只想创建这样一个列表而不调用它,您可以使用速记执行相同的操作:引用它。

    '(2 . ())
    

    【讨论】:

      猜你喜欢
      • 2010-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多