Den 2017-06-09 kl. 22:00, skrev Niklas Keller:
2017-06-09 15:44 GMT+02:00 Sara Golemon <[email protected]>:On Fri, Jun 9, 2017 at 7:23 AM, Björn Larsson <[email protected]> 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.
Applying that to Sara's example becomes:
8. $someDict->map({$v => $v * 2})->filter({$v => $v % 3});
9. $someDict->map(|$v => $v * 2|)->filter(|$v => $v % 3|);
I also find that parenthesis makes it cluttered.
$someDict->map({($v) => $v * 2})->filter({($v) => $v % 3});
Cheers //Björn
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php
