HaloO, Stevan Little wrote:
Here is a 10,000 ft view of the metamodel prototype I sketched out the other day (http://svn.openfoundry.org/pugs/perl5/Perl6-MetaModel/docs/ 10_000_ft_view.pod). It should shed a little light on this discussion.
There you have i(Foo) - instance of Foo Foo - the user-level Foo class class(Foo) - the instance of Perl6::Class named "Foo" meta(Foo) - the instance of Perl6::MetaClass which describes Foo The thing which is clear to everybody---even including stupid me---is that there is a 1:n relation between Foo and i(Foo). But then comes a three part referential chain Foo -> class(Foo) --> meta(Foo) that to me is conceptually *one* thing. The levels of indirection are implementation details, right? The next level where a 1:n relation exists is below meta(Foo) to pure meta. So, for two user classes Foo and Bar we get in top/down view: meta __________|___________________________ | | | meta(Foo) meta(Bar) ... | | class(Foo) class(Bar) | | Foo Bar ______|_____ ______|_____ | | | | | | i(Foo) i(Foo) ... i(Bar) i(Bar) ... Am I missing something? Conceptually I see *one* MetaClass which manages its class instances which in turn manage their object instances. OK, it's slightly more complicated because classes can have class instances and there is multiple inheritance that adds edges into the tree which transform it into a DAG. And I see also classless objects. -- $TSa.greeting := "HaloO"; # mind the echo!