Luke wrote:

> My interpretation (which may be totally off, as I don't have any
> confirmation that anybody else is thinking the same way I am) is that
> the synopsis is wrong, and commutivity of ~~ is a happy coincidence
> wherever it exists.  The way I've been thinking about ~~ is just as
> the following object-oriented sugar:
>
>     role Pattern {
>         method match(Any $x) {...}
>     }
>     sub infix:<~~> (Any $x, Pattern $y) {
>         $y.match($x);
>     }
>
> And then the interpretation of ~~ is determined by its right-hand side.

Heavens, I hope not!

The whole point of ~~ is that it's dispatched multimorphically, *not*
polymorphically. So you get the most appropriate matching behaviour
for the *combination* of arguments.

And I've always imagined that it's commutative for the same reason ==
and eq are communative: because that's the only thing that makes
sense. When you're comparing two apples (or an apple and a
handgrenade), it shouldn't matter which of the two is in your left
hand, and which is in your right.

Damian

Reply via email to