Re: [RFC]Discuss] Syntax for Arrow Functions
| From: | Ilija Tovilo | Date: | Sun, 18 Jun 2017 10:58:26 +0000 |
| Subject: | Re: [RFC]Discuss] Syntax for Arrow Functions | ||
| References: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-99538@lists.php.net to get a copy of this message | ||
The backslash has actually been one of the earlier options if I remember correctly.
I definitely prefer the
fn keyword as it’s only one character more but adds a better
visual hint to the arrow function.
I’m also not sure why we’d choose a different arrow (==> or ~>)
when the ambiguity is solved through either a the backslash or the fn keyword.
> On 15 Jun 2017, at 17:00, Björn Larsson <bjorn.x.larsson@telia.com> wrote:
>
> Den 2017-06-15 kl. 15:34, skrev Fleshgrinder:
>
>> On 6/15/2017 3:29 PM, Björn Larsson wrote:
>>> Seems like the constraints on this feature makes it hard to fly, i.e.
>>> 1. Not a hackish implementation
>>> 2. Non ambiguous syntax
>>> 3. Easy to parse & use syntax for the human
>>>
>>> HackLang then prioritised 2 & 3 making the end-users happy, but
>>> had to sacrifise a clean implementation. Any clue if this was a one-
>>> time effort once it was done or something with a lot of drawbacks
>>> in terms of maintenance, performance, evolution etc?
>>>
>>> r//Björn
>>>
>> On Reddit someone proposed the following syntax:
>>
>> \() => echo 'Hello, World'
>>
>> It is used by Haskell if I remember correctly and should not be
>> ambiguous since ( is not allowed in names of classes or
>> functions. It
>> actually aligns well with functions that are called with a
>> fully-qualified name (e.g. \printf('')).
>>
>> Not sure if it would still require hacks though.
>>
> So applying that one on Sara's example becomes with some
> options for the arrow:
> 8. $someDict->map(\($v) => $v * 2)->filter(\($v) => $v % 3);
> 9. $someDict->map(\($v) ==> $v * 2)->filter(\($v) ==> $v % 3);
> 10. $someDict->map(\($v) ~> $v * 2)->filter(\($v) ~> $v % 3);
>
> Interesting :)
>
> r//Björn
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
> <http://www.php.net/unsub.php>