4.2.2. 型の関係
次の型 cons
, symbol
, array
, number
, character
, hash-table
, function
, readtable
, package
, pathname
, stream
, random-state
, condition
, restart
と、 その他にdefstruct
, define-condition
, defclass
で 作成された単体の型は、 defclass
かdefine-condition
でスーパークラスを指定するか defstruct
の:include
オプションを指定して 明示的に型の関係性を確立させたもの以外は、 それぞれのペアで型が不一致になります。
defstruct
によって作成された2つの型は、 defstruct
の:include
オプションによって ひとつが他のもののスーパータイプになっていない限り 不一致です。
defclass
かdefine-condition
によって作成された 2つの不一致なクラスは、 それらが共通のサブクラスを持っているか、 あるいはひとつが他のもののサブクラスになっていない限り 不一致です。
実装は、指定した型の間において他のサブタイプの関係を 追加で拡張するかもしれませんが、 それらの型の関係性とここで指定された不一致の要求に違反してはいけません。 実装は、定義されている型のサブタイプか スーパータイプの型を追加で定義したいかもしれませんが、 追加する各型は型t
のサブタイプであり、 型nil
のスーパータイプであり、 さらに不一致の要求を違反してはいけません。
standard-object
かstructure-object
が、 どのシステムクラスのクラス優先順位リストにも現れており、 standard-object
かstructure-object
が まだ指定されていないものでも現れているかもしれません。 もしそうであるなら、クラスt
より先行して、 続いて他の全ての標準クラスが現れなければなりません。