Re: [RFC]Discuss] Syntax for Arrow Functions
| From: | Rasmus Schultz | Date: | Sun, 18 Jun 2017 16:40:48 +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 19 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-99539@lists.php.net to get a copy of this message | ||
I don't agree that the fn keyword solves the ambiguity problem - it looks
exactly like a function call.
As for the backslash, my honest reaction is, ugh, please, no more
backslashes - PHP (and every other language) uses backslashes for escaping
in strings, it already looks pretty awkward in namespaces, this won't help.
On Sun, Jun 18, 2017 at 12:58 PM, Ilija Tovilo <ilija.tovilo@me.com> wrote:
> 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>
>