Pavel Kouřil wrote on 03.10.2015 10:06: > On Sat, Oct 3, 2015 at 1:17 AM, Levi Morrison <morrison.l...@gmail.com> wrote: >> I messaged the list about this feature before I had the RFC written up >> for it. The RFC[1] is slightly different from what I proposed in the >> previous thread, so please read the RFC to make sure you understand >> what is being proposed before replying here. >> >> Here's a small example: >> >> $y = 10; >> $result = array_map(function($x) => $x + $y, [1, 2, 3]); >> >> // $result is [11, 12, 13] >> >> Thanks for people who have participated in conversation so far, as >> well as those who participated in Bob's short closures proposal as >> well. >> >> [1]: https://wiki.php.net/rfc/arrow_functions >> >> -- >> PHP Internals - PHP Runtime Development Mailing List >> To unsubscribe, visit: http://www.php.net/unsub.php >> > > Hello, > > thanks for another proposal on this feature. :) > > As I said in the previous e-mails, I'm not really fan of the > "function" prefix - because it has the same prefix as the "long > declarations". Just by removing the { } for =>, the autobinding also > goes into place* and also only one expression is allowed, but the > "beggining" stays the same (that being function ($x)). > > The function keyword also "collides" with the future scope with > multiple statements. > > function ($x) use ($a, $b, $c) { $z = foo($a, $b); return $c($z, $x); } > function ($x) => { $z = foo($a, $b); return $c($z, $x); } > > Now the possible confussion with the different scoping rules would be > even bigger, IMHO. (Disclaimer: I am huge fan of those autoimports and > think that without them, the RFC doesn't technically bring anything > important.) > > Also, I'm not a fan of the "fn" prefix, because then you would have > two ways of writing "function", and people would probably want being > able to use "fn" for named functions as well, bringing inconsistency > into language. Also, this would requiring making "fn" a reserved word, > breaking some applications - wouldn't it? > > Personally I'd prefer the \ prefix you also mention as possible in > your RFC. It's also AFAIK used to denote lamba expression in another > languages already, so it might be familiar for some developers? > > \(int $x) => $x * $y; > \() => foo() > \($x) => \($y) => \($z) > > Yeah, this looks pretty nice. > > Althought I'd honestly really prefer the Bob's syntax, but I > understand that you don't want to make some engine hacks to make it > working - but from userland developer's POV, that one was the best > (speaking as someone, who would use the syntax daily). > > -- > > Regards > Pavel Kouřil > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php >
I would prefer to keep the current syntax and just a different keyword for autobindung: function ($x) use ($a, $b, $c) { $z = foo($a, $b); return $c($z, $x); } function ($x) autobind|autouse|use_all|autoimport|etc. { $z = foo($a, $b); return $c($z, $x); } Regards Thomas -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php