> 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]`.

Reply via email to