CLOSでのメタクラス
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/12/06 12:23 UTC 版)
「メタクラス」の記事における「CLOSでのメタクラス」の解説
Common Lisp Object System(CLOS)のメタオブジェクトプロトコル(MOP)は、Smalltalkのをモチーフにしつつも数々の違いがある。SmalltalkのMOPが(上位型がその下位型の値を継承する)のループ関係を持つのに対して、CLOSのMOPは(上位型がその下位型のインスタンス化になる)のループ関係を持つ。これはSystem Fω=型オペレータに相当し、即ちCLOSのMOPは高階の命題論理に準拠している。 CLOSのMOPの最上位クラスTは、その子孫クラスbuilt-in-classを自身のメタクラスにしていて関係ループしている。Tの子孫クラスの多くはstandard-classをメタクラスにして関係ループしている。また、CLOSはメタオブジェクトを、specializer型特定子、slot-definitionスロット定義、generic-function総称関数、methodメソッド、method-combinationメソッド結合、と明確に性格分けしている。 ここでは、ユーザー定義クラスのメタクラスであるstandard-classまでの継承関係を下に示す。 T - 全オブジェクトと全関数の大元 standard-object - 全オブジェクトの大元スーパークラス metaobject - ここからspecializer型特定子、スロット定義、総称関数、メソッド、メソッド結合に分化される。抽象クラス specializer - 型特定の情報。抽象クラス class - ここからstandard-class標準クラス、組込クラス、関数クラス、転送クラスに分化される。抽象クラス standard-class - ユーザー定義クラスを定義できる
※この「CLOSでのメタクラス」の解説は、「メタクラス」の解説の一部です。
「CLOSでのメタクラス」を含む「メタクラス」の記事については、「メタクラス」の概要を参照ください。
- CLOSでのメタクラスのページへのリンク