Content deleted Content added
m →In RDF Schema: Section anchors added (rdfs/RDFS). |
→History: Power types mentioned, table added. |
||
Line 48:
In Smalltalk, every class has its own metaclass, and metaclass inheritance parallels class inheritance.
In 1988, [[Luca Cardelli]] introduced the notion of ''power types''<ref>
However, a full and consistent application of the eigenclass model appeared first (and only) in the▼
{{cite web | author=Luca Cardelli | url=http://www.daimi.au.dk/~madst/tool/tool2004/papers/structural.pdf | title=Structural Subtyping and the Notion of Power Type}}</ref>
[[Ruby (programming language)|Ruby programming language]].▼
which can be regarded as type-theoretic counterparts to eigenclasses.
The notion has later been adopted in the field of [[Metamodeling|metamodelling]].<ref>{{cite journal |last=Odell |first=James |title=Power Types |journal=Journal of Object-Oriented Programming |volume=7 |year=1994 |number=2 |page=8-12}}</ref>
<ref>
{{cite web | author=C. Gonzalez-Perez, B. Henderson-Sellers | url=http://www.ie.inf.uc3m.es/grupo/docencia/reglada/ASDM/GonzalezPerez06.pdf | title=A powertype-based metamodelling framework}}</ref>
(Nowadays, the single word ''"powertypes"'' is preferred.)
▲
created by [[Yukihiro Matsumoto]].
The term ''"eigenclass"''
In 2008,
the term has been established in an authoritative book,<ref>{{cite book | publisher=O'Reilly Media | author=David Flanagan, Yukihiro Matsumoto | url=http://oreilly.com/catalog/9780596516178/ | title=The Ruby Programming Language | isbn=978-0-596-51617-8}}</ref> replacing the previously used ''"singleton class"''
(although in Ruby 1.9, the corresponding introspection method is still named <code>singleton_class</code>).
By simplification, the development history of the eigenclass model can be viewed as a 3-stage extension of a universality principle, summarized by the following table:
<table style="border-collapse:collapse;" border="1" cellpadding="3">
<tr>
<th>Year</th><th>Inventor</th>
<th>The principle</th>
<th>… in terms of the eigenclass model</th>
</tr>
<tr>
<td style="white-space:nowrap">c. 1980</td>
<td>Jim Althoff<ref>
{{cite web | url=http://mail.python.org/pipermail/python-dev/2001-May/014508.html | title=[Python-Dev] Classes and Metaclasses in Smalltalk }}</ref>
</td>
<td>Every class has its own metaclass.</td>
<td>Every class has an eigenclass.</td>
</tr>
<tr>
<td>c. 1988</td>
<td>Luca Cardelli</td>
<td>Every type has a power type.</td>
<td>Every class and every eigenclass has an eigenclass.</td>
</tr>
<tr>
<td>c. 1995</td>
<td>Yukihiro Matsumoto</td>
<td colspan=2 style="text-align:center">Every object has an eigenclass.</td>
</tr>
</table>
== {{anchor|canonical structure}} The canonical structure of ϵ ==
|