Stevan,
Up until today, I thought I had a good idea of how your metamodel
works, but now I'm confused. My main sticking point is that a class
Foo seems to have three different aspects:
Foo
class(Foo)
meta(Foo)
For each of these, could you please try to explain:
1) Roughly what its responsibility is (and how it relates to the others)
2) Whether it is actually an object
3) If so, what its class is
I realise that some of these details are probably spread around
Synopses, source code, and the inside of your own head, but it would
really help to have a concise, clear definition of each.
So far, this is what I have picked up; some/most of it is probably wrong:
~ Foo ~
Is a type that variables etc. can be declared to have
Is not an object
=> I'm really not sure about this...
~ class(Foo) ~
Used as the invocant of class methods
=> Any other purpose?
Is an object; instance of the 'Class' class
=> How do we get properly-typed access to members that class(Foo) has
that aren't declared in 'Class'?
~ meta(Foo) ~
Members contain info /about/ Foo, rather than /of/ Foo
=> This is to avoid name-clashes with 'name', 'authority' etc.
Is an object; instance of the 'MetaClass' class
Thanks,
Stuart