> On Jun 2, 2022, at 2:59 PM, Brian Goetz <brian.go...@oracle.com> wrote:
> 
> 
>> Oh, I guess I missed your point here, thinking that P and Q were constants.
>> 
>> Your comment implies that the two rules that restrict usage of 
>> patterns—can't fall through past one, and can't combine one (via ',') with 
>> most other labels—could be relaxed slightly in the case of patterns that 
>> have no bindings. I suppose that's formally true, though I'm not sure it's 
>> practically all that useful. (The only non-binding pattern we have right now 
>> is a zero-component record, right? And any non-binding patterns in the 
>> future could be equivalently expressed with 'when' clauses.)
> 
> Here's an example that's not so contrived:
> 
>     String kind = switch (o) {
>         case Integer _, Long _, Short _, Character _, Byte _ -> "integral";
>         case Double _, Float _ -> "floating point";
>         case Boolean _ -> "boolean";
>         default -> "something else";
>     };
> 
> Once we have a "don't care" pattern, any pattern can become binding-less.
> 
> Looking two steps ahead, we might decide it is not so much that there can be 
> _no_ bindings, as much as are the bindings unifiable:
> 
>     case Bag(String x), Box(String x) -> "container of string";

Okay, those are helpful illustrations, thanks.

So an argument against a syntactic prohibition on things like 'Pattern, 
Pattern:' is that we may support those, subject to certain semantic 
restrictions, in the future.

I wonder how we would try to explain 'case Integer x, null, Double x'... (Does 
'x' get bound to 'null'? How?)

Reply via email to