A variant a is said to be _more specific than_ a variant b if:
* Every type in a's signature is a subset (derived from or
equal) of the corresponding type in b's signature.
* At least one of these is a proper subset (not an equality).
A variant is dispatched if there is a unique most specific method
applicable to the given arguments. That is, there exists an applicable
variant a such that for all other applicable variants x, a is more
specific than x.
How did you think pure ordering worked? Were we arguing over
different definitions of that algorithm?
Yes. I had wrongly assumed that the algorithm required "orderability" along
all paths. Some (though not all) of my arguments were indeed predicated on
that assumption, and are hence invalid.
I obviously need to reconsider your (actual ;-) proposed dispatch scheme,
almost certainly by playing with Class::Multimethods::Pure. I'll try to make
time to do that this week, though with OSCON looming, my tuits are even more
pitifully limited than usual.
Thanks for persevering with this, Luke (and everyone else). It's this kind of
passionate commitment to finding the best possible design solutions that has
made/is making/will make Perl 6 insanely great.