Bar*_*mar 5

列表是一串 cons,每个元素都有一个 cons。所以'(1 2)相当于(cons 1 (cons 2 '())), 可以简化为(list 1 2)

相当于字面意思(cons 1 2)'(1 . 2)


Rai*_*wig 5

(cons 1 2)没有创建正确的列表。它创建一个包含两个元素的 cons 单元,两个元素都是数字。

普通列表递归定义为:

  • 空列表
  • 或一个cons 单元,其中包含一个对象作为car和一个列表作为cdr

你的通话中2不是一个列表,而是一个号码。第二个参数cons必须是一个列表才能获得正确的列表。

(1 2)

  • 在 中(1 2)car元素是数字,cdr元素是(2)
  • 在 中(2)car元素是一个数字,cdr元素是(),即空列表。
  • ()是空列表。

(1 2)是根据上面定义的列表。 (cons 1 2)创建(1 . 2),根据上面的定义,它不是一个列表,因为2它不是一个列表。