I'd like to propose a new metamodel that (I hope) will meet all the
specs @Larry has stated thus far. This metamodel is in two parts.

Part the first:
There is a single object given to P6 called Factory. (No, Steve, there
are no turtles.) Factory has two behaviors, no state, and no classes.
The behaviors are:
    * create() - this will create a blank object with no behaviors or state.
    * set_behavior( $object, $name, $behavior) - this will assign
$behavior to $object callable by $name.

Part the second:
A set of keywords will be used to generate objects. That set of
keywords would include class and role. These objects do not have
classes - they are -things- in their own right. (Still no turtles,
Steve.) class and role, for instance, would be given the behaviors:
    * new() - the "constructor". This wraps Factory.create() and
Factory.set_behavior() appropriately. It's unclear whether each item
new() creates should have the methods within them or aliases to the
class's methods.
    * eat() - this would support composition through "has"
    * clone() - maybe?
Plus, whatever other behaviors is necessary. The keyword "is" would be
handled by adding in state (which is just a behavior wrapping some
data) to handle method redispatching to another object (the parent
class).

Yes, this is very prototype-ish. But, the metamodel that Steve's been
working on is moving in that direction. Everything is an object
already. Let's just clear some of the cobwebs and provide a truly
clean interface.

Rob

Reply via email to