【发布时间】:2021-05-25 22:56:02
【问题描述】:
我可以通过以下所有方式创建单元素列表(2):
'(2)
(list 2)
(cons 2 nil)
但是,为什么下面会报错呢?
(2 . nil)
方案中没有“标量空”值这样的东西吗?还是有其他方法可以做到这一点?
【问题讨论】:
我可以通过以下所有方式创建单元素列表(2):
'(2)
(list 2)
(cons 2 nil)
但是,为什么下面会报错呢?
(2 . nil)
方案中没有“标量空”值这样的东西吗?还是有其他方法可以做到这一点?
【问题讨论】:
(2 . '()) 确实代表了单例列表'(2):后者是前者的简写。问题是,如果您在与(cons 2 '()) 相同的上下文中使用它,则会出现错误。为什么?如果您尝试评估(2),您会得到同样的错误!这意味着将2 作为函数调用,不传递任何参数。
如果您只想创建这样一个列表而不调用它,您可以使用速记执行相同的操作:引用它。
'(2 . ())
【讨论】: