Stevan Little wrote:
Here is a 10,000 ft view of the metamodel prototype I sketched
out the other day
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(Foo) meta(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!