I still have most of yesterday's p6i mail to dig through (and
probably won't until this evening), but one thing that's struck me
(courtesy of an ill-timed grumble about objects) is that there are
really three ways to do inheritance, and most languages sort of do
them, with varying amounts of dancing around. The three, as I see it,
are:
*)is - The standard parent/child thing, where the derived class is a
more specialized version of the parent class. This seems to be a
fallback mechanism when others might be more appropriate. This is
done with straight inheritance.
*)has - This is the container/delegation thing, where a class isn't
really a more specialized version of another class, but instead a
container of sorts. This is done via delegation.
*)does - This is the interface/guaranteed behaviour thing, where a
class just promises that it has a certain set of methods
Everyone does them all in half-hearted ways, but I'm thinking we need
to formally support all three, since it'll make doing things properly
easier. (And if a language has built-in hacks to do one of them
another way, that's fine--we don't have to fix that, they just won't
get the engine advantages)
--
Dan
--------------------------------------"it's like this"-------------------
Dan Sugalski even samurai
[EMAIL PROTECTED] have teddy bears and even
teddy bears get drunk