Re: [RFC]Discuss] Syntax for Arrow Functions

From: Date: Fri, 09 Jun 2017 20:00: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-99469@lists.php.net to get a copy of this message
2017-06-09 15:44 GMT+02:00 Sara Golemon <pollita@php.net>: > On Fri, Jun 9, 2017 at 7:23 AM, Björn Larsson <bjorn.x.larsson@telia..com> > wrote: > > If I take the liberty in using the example above on our option list: > > 1. $someDict->map(fn($v) => $v * 2)->filter(fn($v) => $v % 3); > > 2. $someDict->map(function($v) => $v * 2)->filter(function($v) => $v % > 3); > > 3. $someDict->map($v ==> $v * 2)->filter($v ==> $v % 3); > > 4. $someDict->map(($v) => $v * 2)->filter(($v) => $v % 3); // > > Ambiguous > > 5. $someDict->map([]($v) => $v * 2)->filter([]($v) => $v % 3); > > > > Old proposals: > > 6. $someDict->map($v ~> $v * 2)->filter($v ~> $v % 3); > > 7. $someDict->map(lambda($v) => $v * 2)->filter(lambda($v) => $v % 3); > > > Something else which really pops in these examples is the effect of > not needing to use parentheses when embedding a single-arg short > lambda. 3 and 6 in your list read cleaner to me (due to the lack of > parenthesis clutter). Sadly ~> has the same hacky implementation > issues as ==>, but I think that shows a little bit of why the HackLang > team decided the messy lexer was worth the clearer syntax. Another possible syntax (dunno whether this has already been suggested on-list): $function = { $x => 2 * $x }; $function = { ($x) => 2 * $x }; $function = | $x => 2 * $x |; $function = | ($x) => 2 * $x |; Nikita and Levi prefer it with parenthesis, I prefer it without, because I think it's unnecessary clutter. A reason to use | ... | instead of { ... } would be to allow future object literals. Regards, Niklas

« previous php.internals (#99469) next »