[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: ECOOP Reaction to CLOS
- To: common-lisp-object-system@SAIL.STANFORD.EDU
- Subject: Re: ECOOP Reaction to CLOS
- From: kempf%hplabsz@hplabs.HP.COM
- Date: Mon, 24 Aug 87 14:04:19 MST
- In-reply-to: Your message of Mon, 24 Aug 87 12:42:03 -0700. <8708241842.AA11723@hplabsz.hpl.hp.com>
> Define a join class as a superclass which contributes
> two or more subclasses to a CPL calculation. Define
> the base class as the class for which the CPL calculation
> is being made. To calculate the CPL, the inheritance graph
> is searched depth first, left to right, up to joins, starting
> with the base class. Join superclasses are placed in the class
> precedence list at the last occurance, rather than the first,
> since such superclasses are usually more general than their
> subclasses (from the base class's point of view),
> and classes at the end of the class precedence list should be more
> general than those at the beginning. After a join class has
> been inserted, the local precedence ordering for the join
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> class is used to start the left to right search again above
^^^^^
> the join. The qualitative effect is to achieve a linearization
> of the inheritance graph, with more specialized classes at the head of
> the class precedence list and more general classes at
> the tail, keeping together groups of classes which occur
> together in the inheritance graph (i.e. maintaining local
> precedence).
After I mailed this I realized that the ^ underscored section should read:
the local precedence ordering for the join class's leftmost occuring
subclass
So integrating, and making a couple of other minor changes, gives:
Define a join class as a superclass which contributes
two or more subclasses to a CPL calculation. Define
the base class as the class for which the CPL calculation
is being made. To calculate the CPL, the inheritance graph
is searched depth first, left to right, up to joins, starting
with the base class. Join superclasses are placed in the class
precedence list at the last (rightmost) occurance, rather than
the first (leftmost), since such superclasses are usually more
general than their subclasses (from the base class's point of view),
and classes at the end of the class precedence list should be more
general than those at the beginning. After a join class has
been inserted, the local precedence ordering from the first
(leftmost) subclass of the join class is used to start the
left to right search again above the join. The qualitative effect
is to achieve a linearization of the inheritance graph, with
more specialized classes at the head of the class precedence list
and more general classes at the tail, keeping together groups of
classes which occur together in the inheritance graph
(i.e. maintaining local precedence).