On 26 December 2017 18:35:29 GMT+00:00, "li...@rhsoft.net" <li...@rhsoft.net> 
wrote:
>
>
>Am 26.12.2017 um 19:18 schrieb Larry Garfield:
>> If I may, I think the argument has always been that
>> 
>> 1) Foo & Bar makes total sense
>> 2) int|float makes total sense
>> 3) int & string is illogical so wouldn't matter anyway
>
>not true
>
>function x(int|string $x)
>{
>  $x = (int)$x;
>}

I think there's a misunderstanding here. Some previous proposals for "union 
types" also included "intersection types", so that you could assert "parameter 
must implement both of these interfaces". So 'Foo|Bar $x' would mean '$x 
instanceof Foo || $x instanceof Bar' and 'Foo&Bar $x' would mean '$x instanceof 
Foo && $x instanceof Bar'.

I presume that's what Larry means by "int & string is illogical", because it 
would translate to "is_int($x) && is_string($x)", which is false for all values 
of $x. This is different from "int | string", which, as you say, might have 
valid uses.

Regards,

-- 
Rowan Collins
[IMSoP]

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

Reply via email to