1

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がリストから継承し、その逆ではないのは不思議ではありませんか?ここで何が欠けていますか?

4

2 に答える 2

4

これは仕様によるものです。LISTは、CONSまたはシンボルNIL(NULL型の唯一のオブジェクト)のいずれかです。これは、これらの型の両方がLISTの特殊化であり、したがって、同等のシステムクラスがLISTを継承することを意味します。

于 2011-05-26T11:31:34.973 に答える
-1

すべてのコンスがリストであるわけではなく (最終的な cdr が nil ではない可能性があるため)、すべてのリストがコンスであるとは限りません (前述のように、nil はリストではありません)。したがって、技術的に言えば、どちらも適切に他方のサブクラスであるクラスではありません。誰かが実用的な使用法を見たので、仕様がそのように書かれていると思いますが、それが紛らわしく、見当違いである可能性があることに同意します。

于 2011-05-28T14:46:47.080 に答える