Dec 4, 2020 7:37:51 PM Paul Crovella <paul.crove...@gmail.com>:

> On Fri, Dec 4, 2020 at 3:25 PM Larry Garfield <la...@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
>> la...@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

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: https://www.php.net/unsub.php

Reply via email to