
On Sat, Apr 16, 2022 at 05:56:13PM +1200, Greg Ewing wrote:
On 16/04/22 12:56 pm, Steven D'Aprano wrote:
If you exclude models of MI which are logically incoherent and inconsistent, (such as Python's prior to version 2.3), then Python's model of MI is objectively as complete as you can get.
You seem to be assuming that "full MI" has to include a fully automatic means of method resolution.
How very observant of you, I only mentioned that about a hundred bazillion times so far!!! (Yes, I am frustrated. But cheerfully so.)
There's nothing incoherent or inconsistent about the way C++ and Eiffel do MI.
Good thing I never said that they were incoherent or inconsistent. I'm happy to have vigorous debate, but it would be kinda nice if people would argue against my actual position. As I understand it, C++ and Eiffel still do automatic method resolution, it is only when there is a conflict that they demand you manually resolve the conflict.
The main difference is that they require you to explicitly resolve conflicts between inherited methods --
Right, another thing which I have mentioned. In that regard, they are sort of like traits, as developed in Squeak. (Scala traits are something different. Another example of different languages using the same term to mean different things.)
which is arguably more Pythonic than Python, since they refuse the temptation to guess.
There is no *guessing* in the C3 linearization algorithm. -- Steve