Record pattern: matching an empty record

Brian Goetz brian.goetz at oracle.com
Sun Mar 13 15:21:05 UTC 2022


Given a record R, and a record pattern R(P*), where P* is a list of 
nested patterns of the same arity as R's components, then

     x matches R(P*)

iff

     x instanceof R
     && R(var alpha*)  // always true, just binds
     && \forall i alpha_i matches P_i

If P* is empty, the last clause is vacuously true.

On 3/13/2022 11:09 AM, Remi Forax wrote:
> Hi all,
> while writing the prototype of the runtime,
> i found a case i think we never discuss, can we match an empty record ?
>
> record Empty() { }
>
> switch(object) {
>    case Empty() -> ...  // no binding here
>
> I think the answer is yes because i don't see why we should do a special case for that, but i may be wrong.
>
> Rémi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/amber-spec-experts/attachments/20220313/97e47ac1/attachment.htm>


More information about the amber-spec-experts mailing list