[self-interest] A problem about tiebreaker rule in inheritance
Jecel Assumpcao Jr
jecel at merlintec.com
Fri Jan 16 16:23:49 UTC 2004
On Friday 16 January 2004 13:55, Gordon Cichon wrote:
> cyberbaixing wrote:
> >Below are five objects A,B,C,D and E. As usual, a * denotes a parent
> >slot with more *'s indicating lower priority. f and g are method
> >slots with g sending the message f to self.
> >A: p1**= B
> > p2* = C
> >B: p1* = C
> > p2* = D
> >C: f =(..)
> >D: p* = E
> > f =(..)
> >E: g= (..f..)
> >If the parent prioritizing and the sender path tiebreaker rule is in
> >effect, how about the result of A f, B f, A g, B g.
Ok, your interpretations are correct except for B f, as Gordon
> I think that even with tiebreaker rule, ambiguities can arise. In
> this case, the VM recognizes an error and sends some "ambiguous
> message" message to that object instead.
That is exactly the error you would get when trying "B f". Actually, the
tiebreaker rule doesn't even come into play here. Now if the expression
was just "f" inside a method in either C or D executing as a result of
sending a message to B (still with me? ;-) *then* the tiebreaker rule
would allow you to choose correctly between C>>f and D>>f.
> I think that the tiebreaker rule has been abandoned in the later
> versions of self. The reason for this is AFAIK that they make lookup
> much more complex and still do not resolve all potential ambiguities.
It was eliminated in the Self 3.0. I hope my explanation in the previous
paragraph gave a hint of just how complex it was.
More information about the Self-interest