Hi,

In message "Re: differences between Module and Class ?"
    on 03/08/24, Mathieu Bouchard <matju / sympatico.ca> writes:

|> (2a) breaks inheritance tree.  It's not acceptable.
|
|Woops, I wanted to write:
|
|	Class#new is moved to Object.new
|
|Which then makes sense, but supposing you understood me anyway, then I
|don't understand how it breaks things.

No, I didn't understand.  It now makes sense.

|In that light, Ruby's inheritance is a restricted form of LISP's
|multiple inheritance. What I want is that Ruby gets the unrestricted form
|of LISP's multiple inheritance, and not any other kind of multiple
|inheritance.

I understand what you want.

|>  * you can (or forced to) distinguish is-a relation to has-a relation
|>    with "single inheritance w/ mix-in".  I believe this distinction is
|>    a good thing, which make relations clear.
|
|I don't know what it is to be bilingual Japanese/English, but I am
|bilingual French/English, and those are two rather related languages, and
|yet I could pull several examples where it is very much unclear what
|"is" and "has" deeply mean.

It's strictly separated in Japanese, but anyway, I admit an error in
my expression.  It was "primary inheritance" and "auxiliary
inheritance" that I meant to distinguish.

The primary inheritance is inheritance to form class tree.  It's
inheritance in single inheritance.  The auxiliary inheritance is what
we call mix-in.  Despite my previous statement, the auxiliary
inheritance can be "is-a" relation.

This combination is indeed a restricted multiple inheritance.  By this
restriction, we won't have diamond inheritance problem, nor confusion
by complicated class relation network, enjoying power of multiple
inheritance at the same time.  Although it does not solve all of the
problems in multiple inheritance (e.g. name crash).

I think this distinction help good design of class hierarchy.

So, by removing this restriction, what can we buy?  No restriction?
Fine, but it's not what _I_ want to buy.  What else?

							matz.