Hi Stephen,

> On Feb 3, 2017, at 10:38 PM, Stephen Reay <php-li...@koalephant.com> wrote:
> 
> 
>> 
>> I absolutely agree that it's terribleā€¦ the point is that types (even 
>> potential future union types) can be used with short closures, but it 
>> certainly doesn't mean they should be. I don't think confusion with a 
>> non-existent and non-recommended way of coding should be a reason against a 
>> particular syntax.
> 
> Using type hints is a part of the language. It even has benefits that I can 
> absolutely see being used here:
> 
> array_map(function(Foo $x) => $x->bar()); 
> 
> If Foo is a class/interface with a method of bar, your IDE can know that it's 
> a valid method to call.
> 
> That of course is in addition to the benefit of getting useful type errors 
> from PHP itself.

You raise a good point about IDEs, types might have a place with short 
closures. Still, I don't see union types, if they ever exist, being common 
here. Taking your example with the other proposed syntax:

    array_map(|Foo $x| => $x->bar());

Honestly I'm not sure which is betterā€¦ personal preference at this point, each 
has their merits.

>> 
>>> As has been said before, PHP is relatively verbose compared to other 
>>> languages. That makes it slightly more characters to type, but it also 
>>> makes it absolutely clear what is happening.
>> 
>> Using `function` IMO makes it more likely to confuse a short closure with a 
>> regular closure. Reusing the `function` keyword with different semantics may 
>> result in some confusion.
>> 
> 
> So we should instead use syntax already used for bit wise OR, and further 
> confuse the situation when the function has no parameters and reusing the 
> logical OR operator. Brilliant.

This is certainly a downside, though expressions cannot start with a logical or 
bitwise OR, so that will help differentiate them. However, it is hard to argue 
that `function` could be confusing when something like `|| => $x ** 2` may be 
more confusing, so point taken. Regardless, I still prefer the visual 
difference since the auto-capture behavior is so different from other functions.

Cheers!

Aaron Piotrowski




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

Reply via email to