Balls.. Void my last comment.. On 26 Apr 2016 4:42 p.m., "Dominic Grostate" <codekest...@googlemail.com> wrote:
> Is this RFC going to play nice with Void return types? > > If we get unions, then doesn't it follow that the declaration goes as this? > > function foo(A | B $val = null): JustChill | void > {} > > That's a nullable typehint and a nullable return type surely. > On 26 Apr 2016 4:07 p.m., "Joe Watkins" <pthre...@pthreads.org> wrote: > >> Dmitry, >> >> > "Foo | null" doesn't make sense without "Union Types". >> >> I just said that in a chat room, and someone said "I prefer Bar | null >> over >> ?Bar, I find myself missing the ?". >> >> So maybe there is rationale for choosing a syntax for nullable first, >> independent of the question of return and params, and unions or >> intersections ? >> >> Levi, >> >> > Joe seems to just want nullables to have an outcome so it is no longer >> blocking typed properties. >> >> I want it to have the right outcome, but yes, basically ... get off my >> lawn >> :D >> >> I am persuaded that Bar | null could be perceived as clearer regardless of >> the introduction of multi types, it may be a worthwhile conversation/vote. >> >> Cheers >> Joe >> >> On Tue, Apr 26, 2016 at 3:53 PM, Dmitry Stogov <dmi...@zend.com> wrote: >> >> > "Foo | null" doesn't make sense without "Union Types". >> > Voting for one RFC first makes a preference and unfair. >> > >> > Voting for two different RFCs with 2/3 majority is not good as well. >> > But this is the best option from my point, in case both pass we may make >> > additional voting with simple majority "Union" or "Nullable" or >> > "Union+Nullable". >> > >> > Thanks. Dmitry. >> > >> > ________________________________________ >> > From: Levi Morrison <morrison.l...@gmail.com> >> > Sent: Tuesday, April 26, 2016 17:47 >> > To: Dmitry Stogov >> > Cc: Bob Weinand; internals; Joe Watkins >> > Subject: Re: [PHP-DEV] [RFC] Patch for Union and Intersection Types >> > >> > On Tue, Apr 26, 2016 at 8:30 AM, Dmitry Stogov <dmi...@zend.com> wrote: >> > > >> > > >> > > On 04/26/2016 05:19 PM, Bob Weinand wrote: >> > >>> >> > >>> Am 26.04.2016 um 15:33 schrieb Dmitry Stogov <dmi...@zend.com>: >> > >>> >> > >>> hi Levi, >> > >>> >> > >>> It looks like your "work" on "Nullable Types" RFC was intended to >> win >> > >>> time for this patch and block "Nullable Types" again. >> > >>> Actually, you have been blocking it for more than a year :( >> > >>> >> > >>> I'm going to push my own RFC for voting together with "Union Types". >> > >>> >> > >>> https://wiki.php.net/rfc/nullable_return_types >> > >>> >> > >>> At least, it has up to date implementation. >> > >>> >> > >>> We discussed this internally 2-3 weeks ago, and my politeness >> (or/and >> > >>> stupidity) allowed you to pass your version for common discussion. >> > >>> Now I can see your real reason :( >> > >>> >> > >>> Both "Union Types" and "Nullable Types" may make sense, and both >> should >> > >>> be voted at the same time. >> > >>> Tomorrow is time to start voting. Right? >> > >>> >> > >>> Thanks. Dmitry. >> > >>> >> > >>> >> > >>> ________________________________________ >> > >>> From: Levi Morrison <morrison.l...@gmail.com> >> > >>> Sent: Tuesday, April 26, 2016 02:37 >> > >>> To: internals >> > >>> Subject: [PHP-DEV] [RFC] Patch for Union and Intersection Types >> > >>> >> > >>> Internals, >> > >>> >> > >>> Joe Watkins and Bob Weinand have worked out a [proof-of-concept >> patch >> > >>> for union types][1]. Please go download it and experiment with it. >> > >>> >> > >>> A few things to note: >> > >>> >> > >>> * This patch includes intersection types. However, a type >> expression >> > >>> must be either a union type or an intersection type; it doesn't >> > >>> support both such as `Array | (Countable & Traversable)`. >> > >>> * This patch adds `null`, `true` and `false` for type >> declarations. >> > >>> * This patch includes conversion rules for weak types. >> > >>> * It does not have short-hand for unions with null (`?Foo` being >> > `Foo | >> > >>> Null`) >> > >>> >> > >>> These features (or omitted ones) are not necessarily what will be >> > >>> voted on. Rather this patch allows us to experiment with these >> > >>> features in code. This experience should be helpful for us to >> solidify >> > >>> how we actually feel about these features. >> > >>> >> > >>> I especially would like people to try out the conversion rules for >> > >>> scalar types as it has been a point of discussion. >> > >>> >> > >>> [1]: https://github.com/php/php-src/pull/1887 >> > >> >> > >> Hey Dmitry, >> > >> >> > >> Please, do not accuse us of blocking the nullables. This wasn't >> > >> intentional and rather a coincidence that we provided a patch right >> now. >> > >> First we wanted to concentrate our forces on getting a great 7.0 out >> > >> before starting this RFC (as it didn't make it in time for going into >> > 7.0 >> > >> too as we waited for result on scalar types in general first). >> > >> Then, as you're aware Levi had absolutely no time for a few months… >> Now, >> > >> he has time to manage things and we could move ahead quickly and >> write >> > the >> > >> patch up. >> > > >> > > I know, we all like to make our best for PHP. >> > > Sorry, if I was too emotional. >> > >> >> > >> I'd like to hold first a formal (and binding) vote on whether "null >> |" >> > or >> > >> "?" should be used (in case both RFCs pass). Rushing things through >> > right >> > >> now might just us ending up with semantics the vast majority >> dislikes. >> > > >> > > I didn't exactly get, what do you propose. One RFC with voting for >> > > "Nullable" or "Union"? >> > > >> > > Thanks. Dmitry. >> > > >> > >> >> > >> Thanks, >> > >> Bob >> > > >> > > >> > > >> > > >> > > >> > > >> > >> > I believe the intention here is to decide whether we do the short-hand >> > syntax for nullable types or only the long-form. I can understand the >> > rationale of not having both or at least dis-allowing the syntax to >> > mix them. For example, I don't think anyone really likes allowing >> > this: `?Array | Travsersable` as . >> > >> > However, if the union types RFC does not pass then it seems odd (to me >> > at least) to use the expression `Foo | Null` instead of `?Foo`, but I >> > know Bob would like the long-form in all cases, hence why he would >> > like a vote. Joe seems to just want nullables to have an outcome so it >> > is no longer blocking typed properties. >> > >> > Is that a correct summary, Bob and Joe? >> > >> >