> From: "John Rose" <[email protected]>
> To: "Brian Goetz" <[email protected]>
> Cc: "amber-spec-experts" <[email protected]>
> Sent: Saturday, September 10, 2022 2:45:16 AM
> Subject: Re: Array patterns (and varargs patterns)
> 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.
yes,
Rémi
> 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]`.