Странный список приоритетов классов в sbcl - PullRequest
1 голос
/ 26 мая 2011

In 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>)

Разве не странно, что минусы наследуются от списка, а не наоборот? Что мне здесь не хватает?

Ответы [ 2 ]

4 голосов
/ 26 мая 2011

Это согласно спецификации . LIST является либо CONS , либо символом NIL (который является единственным объектом типа NULL ), что означает, что оба эти типа являются специализациямиLIST и, следовательно, их эквивалентные системные классы наследуются от LIST.

0 голосов
/ 28 мая 2011

Не все conses являются списками (поскольку конечный cdr может быть не nil), и не все списки являются conses (nil не является списком, как упоминалось ранее).С технической точки зрения, ни один из классов не является подклассом другого.Я думаю, что спецификация написана таким образом, потому что кто-то видел практическое использование, но я согласен, что это сбивает с толку и может вводить в заблуждение.

...