Re: Sketch of multiple inheritance in E

Lex Spoon <[email protected]>
Newsgroups gmane.comp.lang.e.general
Message-ID <[email protected]>
On Mar 10, 2009, at 5:05 PM, Kevin Reid wrote:
> (Fixing diamond inheritance is a little bit tricky, because it means
> that if you have A isa B isa D and A isa C isa D, then B's behavior
> (whether its super-call goes to D or C) has to depend on the existence
> of C, which is not part of B's definition. However, I believe this is
> *possible*, in a safe way, because B has the "self" reference, which
> is the authority on how the composite object should behave.)

Gilad Bracha said that mixin inheritance means that "super" can be  
overridden.  That's true, or at least it's true for linearization  
interpretations of multiple inheritance.

The ultimate authority is the concrete class that is instantiated, in  
this case "A", which can be queried as you describe via the "self"  
reference.  In one way or another, the self reference must specify  
that when B.m does "super", C.m is supposed to respond, when C.m does  
super, D.m is supposed to respond, etc.  If nothing else, such a call  
could be implemented as "self.super_of_m_from_B" and  
"self .super_of_m_from_C".  A then needs to implement all these  
"super" methods.

Figuring out how A should know which method responds to which call...  
looks interesting.  :)  Maybe it can inspect the whole hierarchy above  
it, or maybe it can do something more elegant.

Lex
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.