sbcl中的奇怪的类优先级列表

时间:2011-05-26 09:59:59

标签: lisp common-lisp sbcl clos mop

在sbcl中,

*(sb-mop:class-precedence-list (find-class 'cons))
==>(#<BUILT-IN-CLASS CONS> #<BUILT-IN-CLASS LIST> #<BUILT-IN-CLASS SEQUENCE>
 #<BUILT-IN-CLASS T>)

cons从列表继承而不是相反的方式是不是很奇怪?我在这里缺少什么?

2 个答案:

答案 0 :(得分:4)

这是specificationLISTCONS或符号NIL(它是NULL类型的唯一对象),这意味着这两种类型都是LIST的特化,因此它们等价系统类继承自LIST。

答案 1 :(得分:-1)

并非所有的conses都是列表(因为最终的cdr可能不是nil),并且并非所有列表都是conses(nil不是列表,如前所述)。从技术上讲,两者都不是正确的另一个类的子类。我认为规范的编写方式是因为有人看到了实际用途,但我同意这是令人困惑的,而且可能是错误的。