Intersection types

php.internals

Gert

6 years ago
Hi Internals, With recent additions of the type system like union types [1], id like to propose adding intersection types as well. Looking through past RFCs I found one from 2016 [2] which never left the discussion phase and is currently marked as inactive. Before continuing with an RFC I'd like to know if there are any particular reasons why the original RFC never got into a voting phase, so that this one may be more successful. P.S. I’d also like to get RFC karma so I could create a proposal. Thanks in advance! [1] https://wiki.php.net/rfc/union_types_v2 <https://wiki.php.net/rfc/union_types_v2> [2] https://wiki.php.net/rfc/intersection_types <https://wiki.php.net/rfc/intersection_types>

Larry Garfield

6 years ago
On Sat, May 30, 2020, at 3:02 AM, Gert de Pagter wrote:
> Hi Internals, > > With recent additions of the type system like union types [1], id like > to propose adding intersection types as well. > > Looking through past RFCs I found one from 2016 [2] which never left > the discussion phase and is currently marked as inactive. > Before continuing with an RFC I'd like to know if there are any > particular reasons why the original RFC never got into a voting phase, > so that this one may be more successful. > > P.S. I’d also like to get RFC karma so I could create a proposal. > > Thanks in advance! > > > [1] https://wiki.php.net/rfc/union_types_v2 > <https://wiki.php.net/rfc/union_types_v2> > [2] https://wiki.php.net/rfc/intersection_types > <https://wiki.php.net/rfc/intersection_types>
To my recollection, the original RFC was met with a general "meh, sounds complicated, and why would you want to do that?" which is why it never went as far as a vote. I don't know if there was an implementation. Note that it was proposed seemingly in conjunction with union types v1, and a lot of the discussion really confused the two. 4 years later, Nikita tried union types a second time and they sailed through. I couldn't say why, but I speculate that it was a combination of 4 years of the community maturing, different people being around, and just union types without intersection types being an easier thing to swallow. I'd say go for it. I'd love to see intersection types, as it would be very helpful to certain use cases with FIG PSRs. (Eg, "I want an object that is a Response and also has the Link extensions from PSR-13 on it" is currently impossible to specify. Intersection types would solve that perfectly.) --Larry Garfield

Gabriel Caruso

6 years ago
On Sun, 31 May 2020 at 04:39, Larry Garfield <larry@garfieldtech.com> wrote:
> On Sat, May 30, 2020, at 3:02 AM, Gert de Pagter wrote: > > Hi Internals, > > > > With recent additions of the type system like union types [1], id like > > to propose adding intersection types as well. > > > > Looking through past RFCs I found one from 2016 [2] which never left > > the discussion phase and is currently marked as inactive. > > Before continuing with an RFC I'd like to know if there are any > > particular reasons why the original RFC never got into a voting phase, > > so that this one may be more successful. > > > > P.S. I’d also like to get RFC karma so I could create a proposal. > > > > Thanks in advance! > > > > > > [1] https://wiki.php.net/rfc/union_types_v2 > > <https://wiki.php.net/rfc/union_types_v2> > > [2] https://wiki.php.net/rfc/intersection_types > > <https://wiki.php.net/rfc/intersection_types> > > To my recollection, the original RFC was met with a general "meh, sounds > complicated, and why would you want to do that?" which is why it never went > as far as a vote. I don't know if there was an implementation. Note that > it was proposed seemingly in conjunction with union types v1, and a lot of > the discussion really confused the two. > > 4 years later, Nikita tried union types a second time and they sailed > through. I couldn't say why, but I speculate that it was a combination of > 4 years of the community maturing, different people being around, and just > union types without intersection types being an easier thing to swallow. > > I'd say go for it. I'd love to see intersection types, as it would be > very helpful to certain use cases with FIG PSRs. (Eg, "I want an object > that is a Response and also has the Link extensions from PSR-13 on it" is > currently impossible to specify. Intersection types would solve that > perfectly.) > > --Larry Garfield > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php
I second everything that Larry said.