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(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!

Reply via email to