On Sat, Mar 10, 2007 at 04:51:28PM +0000, Jonathan Worthington wrote:

> Different languages may have a different MRO. Python since 2.3 and Perl 
> 6 by default use C3. Perl 5 used something else. Therefore, we need 
                              uses

> Hope that this makes some kinda sense - feedback would be *very* welcome!

Pedant point, I know, but any suggestion that Perl 5 is "special biologist
word for stable" seems to raise some hackles with the
over-sensitive-but-less-than-sensitive-about-it.

Brandon Black has been working on making (IIRC) pluggable MRO for Perl 5 -
you might want to talk to him. We've not been able to give him much helpful
feedback on the implementation of that, because all the Perl 5 MRO code
predates "change 1" - the import of 5.003 to perforce in 1997. I suspect it
goes back to 5.000. As part of "we", I've really not thought about the
implications of this sort of thing.

Does it actually work having different classes in the same hierarchy
declaring their own MRO? For example, if A-F declare themselves to be
leftmost depth first (or whatever the correct term is for Perl 5's order),
but G-I declare themselves to be C3, will it work?

      A
     / \
    B   C
   / \ / \
  D   E   F
   \ / \ /
    G   H
     \ /
      I


Specifically because I thought that with C3, in

    J
   / \
  K   L
   \ /
    M

the search order is M, K, L, J, whereas Perl 5 does M, K, J, L.

So if the top diamonds are ordered the Perl 5 way, they flatly contradict
the guarantee of C3.

It might be that I'm confused, misremembering or undercaffeinated.

Nicholas Clark

Reply via email to