[External] : Re: Primitive type patterns
forax at univ-mlv.fr
forax at univ-mlv.fr
Thu Apr 7 21:54:24 UTC 2022
> From: "Brian Goetz" <brian.goetz at oracle.com>
> To: "Remi Forax" <forax at univ-mlv.fr>
> Cc: "amber-spec-experts" <amber-spec-experts at openjdk.java.net>
> Sent: Thursday, April 7, 2022 11:24:05 PM
> Subject: Re: [External] : Re: Primitive type patterns
>> We already discussed those rules when we discuss instanceof, it means that "x
>> instanceof primitive" has different meaning depending on the type of x
> No, it does not. It means "does x match the pattern P" everywhere. It is pattern
> P is that has different meanings depending on type. This may sound like a silly
> distinction, but it is not! Pattern matching is inherently polymorphic -- it is
> all about reflecting dynamic conversions statically -- and exhibits the *same*
> polymorphism regardless of where it occurs.
The switch is (runtime) polymorphic while each patterns does not have to be (statically) polymorphic.
If you prefer, i'm okay with be a pattern overriding polymorphic but not with a pattern being overloading polymorphic (sometimes called ad-hoc polymorphism).
Your are proposing overloading of patterns, i.e the same pattern having different meaning depending on the static types.
> And, why would we not want duality with:
> record R(short s) { }
> ...
> new R(x)
because new R(x) is alone while case R(...) is part of a larger set of patterns/sub-pattern of the pattern matching, if for each pattern/sub-pattern, we need a double-entry table to understand the semantics, we are well past our complexity budget.
Rémi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/amber-spec-experts/attachments/20220407/c4a58aae/attachment-0001.htm>
More information about the amber-spec-experts
mailing list