I was practicing that trick all morning!

I agree that `Foo[P]` can be saved for later.

In case it wasn’t clear in my previous message, I also think that splicey stuff like `new Foo[]{ ...as, b, c, ...ds, e }` and the corresponding slicey patterns can *also* be saved for later.

In fact, the slice/splice stuff seems like it is best situated in a larger design exercise for “collection literals” whatever those are. Basically, that would be where Lisp’s backquote-comma get inherited by Java.

On 9 Sep 2022, at 17:16, Brian Goetz wrote:

John pulled a nice Jedi-mind-trick on me, and pointed out that we actually have two creation expressions for arrays:

    new Foo[n]
    new Foo[] { a0, .., an }

and that if we are dualizing, then we should have these two patterns:

    new Foo[] { P0, ..., Pn }  // matches arrays of exactly length N     new Foo[P]                 // matches arrays whose length match P

but that neither

    new Foo[] { P, Q, ... }   // previous suggestion
nor
    new Foo[L] { P, Q }       // current suggestion

correspond to either of those, which suggests that we may have prematurely optimized the pattern form.  The rational consequence of this observation is to do

    new Foo[] { P0, ..., Pn }  // matches arrays of exactly length N

now (which is also the basis of varargs patterns), and once we have constant patterns (which are kind of required for the second form to be all that useful), come back for `Foo[P]`.


Reply via email to