Re: [PHP-DEV] Re: [RFC] Arrow functions / short closures

This is only part of a thread. view whole thread
  105262
April 12, 2019 14:46 theodorejb@outlook.com (Theodore Brown)
On Thursday, April 11, 2019 at 10:22 AM Fabien S <fabacrans@gmail.com> wrote:

> I really like the Haskell `\($x)` syntax, could someone confirm if > it would possible to drop the parenthesis (like `\$x`) if we have > one argument ?
The RFC says this syntax is ambiguous without the parentheses, since the `\` may also be part of a fully qualified type name. [1] I'm not sure whether it would work if the single parameter isn't typed. I like the Haskell syntax as well, but I'd also be okay with the `fn` keyword if that's what others prefer. [1]: https://wiki.php.net/rfc/arrow_functions_v2#miscellaneous
  105263
April 12, 2019 15:26 fabacrans@gmail.com (Fabien S)
> On 12 Apr 2019, at 16:46, Theodore Brown <theodorejb@outlook.com> wrote: > > On Thursday, April 11, 2019 at 10:22 AM Fabien S <fabacrans@gmail.com> wrote: > >> I really like the Haskell `\($x)` syntax, could someone confirm if >> it would possible to drop the parenthesis (like `\$x`) if we have >> one argument ? > > The RFC says this syntax is ambiguous without the parentheses, since > the `\` may also be part of a fully qualified type name. [1] > > I'm not sure whether it would work if the single parameter isn't typed. > > I like the Haskell syntax as well, but I'd also be okay with the `fn` > keyword if that's what others prefer. > > [1]: https://wiki.php.net/rfc/arrow_functions_v2#miscellaneous
Thanks for the clarification, I should have been more specific but I saw you used `\$x` in your previous message and I was wondering if this syntax is unambiguous. Basically: ```php \$x => $x + 1; // One (not typed) argument, no parenthesis needed \(int $x) => $x + 1; // Typed, parenthesis needed \($x, $y) => $x + $y; // Multiple arguments, parenthesis needed ``` I don't think it's really important but it would be pretty handy syntax in my humble opinion.
  105264
April 12, 2019 15:40 joshdifabio@gmail.com (Josh Di Fabio)
On Fri, Apr 12, 2019 at 4:27 PM Fabien S <fabacrans@gmail.com> wrote:
> > > > On 12 Apr 2019, at 16:46, Theodore Brown <theodorejb@outlook.com> wrote: > > > > On Thursday, April 11, 2019 at 10:22 AM Fabien S <fabacrans@gmail.com> wrote: > > > >> I really like the Haskell `\($x)` syntax, could someone confirm if > >> it would possible to drop the parenthesis (like `\$x`) if we have > >> one argument ? > > > > The RFC says this syntax is ambiguous without the parentheses, since > > the `\` may also be part of a fully qualified type name. [1] > > > > I'm not sure whether it would work if the single parameter isn't typed. > > > > I like the Haskell syntax as well, but I'd also be okay with the `fn` > > keyword if that's what others prefer. > > > > [1]: https://wiki.php.net/rfc/arrow_functions_v2#miscellaneous > > > Thanks for the clarification, I should have been more specific but I saw you used `\$x` in your previous message and I was wondering if this syntax is unambiguous. > > Basically: > > ```php > \$x => $x + 1; // One (not typed) argument, no parenthesis needed > \(int $x) => $x + 1; // Typed, parenthesis needed > \($x, $y) => $x + $y; // Multiple arguments, parenthesis needed > ``` > > I don't think it's really important but it would be pretty handy syntax in my humble opinion.
Agreed. Arrow functions work the same way in TypeScript I think (parens are required for typed parameters).
> -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php >