HaloO,
Audrey Tang wrote:
> A variant's score cards only records two Boolean values for each
> variant: "voting" and "qualified".
Here is a summary of the explanation Audrey gave me on #perl6.
Note that this is from memory because I didn't save the log.
In particular I don't remember exactly where the intersection
of QS and VS was taken. But I hope I understood the algorithm.
So, correct me if there is a mistake below.
The following assumes a call with
\($fido,$fido) # (Dog,Dog)
to two multi targets M1 and M2. For each target two sets of
methods are maintained: QS (Qualified Set) and VS (Voting Set).
The numbers indicate the values after the evaluation of the
argument positions. Step 0 is the applicability test. When the
sets are the same for M1 and M2 they are listed only once.
:(Dog, Animal) # M1
:(Animal, Dog) # M2
0: QS={M1,M2} VS={M1,M2}
1: QS={M1} VS={M1,M2}
2: QS={} VS={M1,M2}
Result is ambiguity because of the empty QS.
:(Dog; Animal) # M1
:(Animal; Dog) # M2
0: QS={M1,M2} VS={M1,M2}
1: QS={M1} VS={M1,M2}
2: QS={M1} VS={M1}
M1 is chosen. Both VS are reduced by M2 which is
already disqualified. That is the new VS is the
intersection of the old VS and QS.
:(Dog; Animal) # M1
:(Animal, Dog) # M2
0: QS={M1,M2} VS={M1,M2}
1: QS={M1} VS={M1,M2}
2: QS1={M1} VS1={M1}
QS2={} VS2={M1,M2}
Single semicolon is local action on VS of M1.
Result is ambiguity because of non-consensus.
:(Dog, Animal) # M1
:(Animal; Dog) # M2
0: QS={M1,M2} VS={M1,M2}
1: QS={M1} VS={M1,M2}
2: QS1={} VS1={M1,M2}
QS2={M1} VS2={M1}
Result is ambiguity because of non-consensus.
:(Dog;; Animal) # M1
:(Animal, Dog) # M2
0: QS={M1,M2} VS={M1,M2}
1: QS={M1} VS={M1,M2}
2: QS={} VS={M2}
Double semicolon is a global operation to take M1 out of
all VS, hence no case distinction. The remaining M2 in VS
of step 2 disqualifies M1 and we end up with ambiguity.
:(Dog, Animal) # M1
:(Animal;; Dog) # M2
0: QS={M1,M2} VS={M1,M2}
1: QS={M1} VS={M1,M2}
2: QS={M1} VS={M1}
This dispatches to M1.
Note that the purpose of the VS is to disqualify other
methods. Only the methods in QS remain contenders.
Regards, TSa.
--