Re: [RFC] Enumerations
| From: | Larry Garfield | Date: | Sat, 05 Dec 2020 14:42:44 +0000 |
| Subject: | Re: [RFC] Enumerations | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-112425@lists.php.net to get a copy of this message | ||
On Sat, Dec 5, 2020, at 3:26 AM, Pierre R. wrote:
> Le 05/12/2020 à 00:24, Larry Garfield a écrit :
> > Greetings, denizens of Internals!
> >
> > Ilija Tovilo and I have been working for the last few months on adding support for
> > enumerations and algebraic data types to PHP. This is a not-small task, so we've broken it up
> > into several stages. The first stage, unit enumerations, are just about ready for public review and
> > discussion.
> >
> > The overarching plan (for context, NOT the thing to comment on right now) is here:
> > https://wiki.php.net/rfc/adts
> >
> > The first step, for unit enumerations, is here:
> >
> > https://wiki.php.net/rfc/enumerations
> >
> > There's still a few bits we're sorting out and the implementation is mostly
> > done, but not 100% complete. Still, it's far enough along to start a discussion on and get
> > broader feedback on the outstanding nits.
> >
> > I should note that while the design has been collaborative, credit for the implementation
> > goes entirely to Ilija. Blame for any typos in the RFC itself go entirely to me.
> >
> > *dons flame-retardant suit*
> >
> Another question, about match() behavior:
>
> > This usage requires no modification of |match|. It is a natural
> implication of the current functionality.
>
> May be this could be the time to have a "strict match", using enums, we
> can "statically" guess if branches are missing (of course, whenever you
> use default it valid to miss branches) - one thing I'd love is PHP to
> throw a fatal error when compiling a match expression whose missing
> branches, and not wait until runtime to fail.
I think that would make a great follow-up, but it's out of scope for now.. Having match
statically know what the available types are when the variable type isn't yet known (because
it's in another file) is... I don't know how to do that. That's a broad problem
across PHP, frankly. If we can figure out a way to do so, I'd support adding it in the future.
(I can't speak for Ilija, but I suspect he would be on board as well.)
--Larry Garfield