I find these arguments not-remotely-compelling. Variable declarations should look like declarations; it is highly error-prone to have the mere mention of a name cause it to spring into being.  I see no value, and much anti-value, in having `Point(x)` introduce a new variable x.

So, no.  I think that would be a very bad idea.



On 9/13/2020 3:10 PM, fo...@univ-mlv.fr wrote:


------------------------------------------------------------------------

    *De: *"Brian Goetz" <brian.go...@oracle.com>
    *À: *"Remi Forax" <fo...@univ-mlv.fr>
    *Cc: *"amber-spec-experts" <amber-spec-experts@openjdk.java.net>
    *Envoyé: *Dimanche 13 Septembre 2020 20:34:54
    *Objet: *Re: Updated patterns-in-switch doc


            I don’t quite get the leap from “no constant patterns” to
            changing the syntax of deconstruction patterns, but in any
            case, we definitely don’t want this (and in fact, for the
            same reasons cited in the section on constant patterns,
            and others.)


        if case Point(x, y) can not mean instanceof Point p where p.x
        == x && p.y == y, then case Point(x, y) can have the same
        meaning has a lambda (x, y), introducing two fresh variables x
        and y.


    If you're making the claim that "It would not be disastrously
    inconsistent for it to work that way", I agree.  But I think it
    would still be quite foolish of us to go that way anyway.  The
    benefit is tiny (a few fewer characters typed) at a very
    considerable cost -- reduced readability, and potential ambiguities.


The main issue i see with using var is that when you have nested patterns, "var" starts to becomes noise because you start to have several of them, so it makes the nesting less obvious. For me, var is good the first times to see how pattern matching works, it's very similar how as a beginner you are prefixing everything with "this" but after some times, it falls into the noise category, that why i'm not proposing to not allow "var" but to allow to not use "var". Again, this is very similar to the things we were discussing during the conception of lambdas, should we try to protect them with a lot of syntax to say, this is the new thing or should we try to make the syntax simpler with the risk of people not understanding it.

Rémi


Reply via email to