Hi!

> On Apr 22, 2016, at 9:39 AM, Levi Morrison <le...@php.net> wrote:
> 
>> Not much else to say, the syntax reads a bit weird/heavy being all in-line
>> with the function signature but at the same time I can't imagine how else it
>> would work that would be any better.
> 
> As mentioned on Reddit and in the future scope section of union types,
> we may want to introduce named type expressions:
> 
>    type IntReducer = callable(int, int): int;
> 
> Which would also allow unions (if passed, of course):
> 
>    type Iterable = Array | Traversable;
> 
> It would also allow for a general type-aliasing mechanism for single
> names. This feature has been asked for in the past but I can't
> remember the use-cases so this example is not very good:
> 
>    type Foo = SomeFoo;
> 
> Then we just use the names where we would have put the expressions:
> 
>    function reduce(int $a, int $b, IntReducer $reducer): int {
>        return $reducer($a, $b);
>    }
> 
> -- 
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
> 

While this is somewhat off-topic of this particular RFC, since we can already 
do general type-aliasing with `use`,

use SomeFoo as Foo;

perhaps similar syntax could be used for type expressions, eliminating the need 
for a new keyword.

use callable(int, int): int as IntReducer;

use array | Traversable as Iterable;

Cheers!

Aaron Piotrowski
@trowski2002
trowski.com
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to