% 4.2.2. 型の関係
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より先行して、
続いて他の全ての標準クラスが現れなければなりません。