Re: [RFC] Enumerations
| From: | Larry Garfield | Date: | Sat, 05 Dec 2020 02:59:34 +0000 |
| Subject: | Re: [RFC] Enumerations | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-112419@lists.php.net to get a copy of this message | ||
Dec 4, 2020 7:37:51 PM Paul Crovella <paul.crovella@gmail.com>:
> On Fri, Dec 4, 2020 at 3:25 PM Larry Garfield <larry@garfieldtech.com> wrote:
>>
>> 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*
>>
>> --
>> Larry Garfield
>> larry@garfieldtech.com
>
> I'd like to see the specific reasons for the restrictions listed in
> Comparison to objects[1]. In general if something's value is even
> debatable then the default position should be to remain consistent
> with the rest of the language. It should take a strong argument to
> introduce any artificial limitation and it's useful to have that in
> the RFC.
>
> [1] https://wiki.php.net/rfc/enumerations#comparison_to_objects
>
The reasoning general comes down to one of 2 things:
* they involve state, and enum cases have no state. They may get reintroduced with tagged unions,
but for now methods relating to state would just be confusing.
* we couldn't figure out what possible use they'd have (like static methods on cases,
which without data are exactly the same as normal methods.)
--Larry Garfield