首页 > 解决方案 > 以各种方式创建列表

问题描述

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

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

但是,为什么以下给出错误?

(2 . nil)

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

标签: schemelispracketsicp

解决方案


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

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

'(2 . ())

推荐阅读