On 13/07/2020 00:20, Guido van Rossum wrote:
The need for a wildcard pattern has already been explained -- we really want to disallow `Point(x, y, y)` but we really need to allow `Point(z, _, _)`. Generating code to assign the value to `_` seems odd given the clear intent to *ignore* the value.
Would it be impossible for the parser to interpret Point(x, y, y) as "the second and third arguments of Point must have the same value in order to match. Bind that value to y"? Since the value has to be the same, it doesn't matter whether y binds to the first or the second (or the nth) instance of it. That said, in time and with all the arguments brought to the table, I personally came to accept special-casing _, although I don't especially like it. From my point of view, the biggest issue to solve is the load vs. store decision and its syntax.