> Am 31.01.2017 um 19:41 schrieb Christoph M. Becker <cmbecke...@gmx.de>: > > On 31.01.2017 at 19:16, Michael Morris wrote: > >> On Tue, Jan 31, 2017 at 12:29 PM, Larry Garfield <la...@garfieldtech.com> >> wrote: >> >>> My question is why there's no mention of HHVM short closures, or the >>> previous RFC to take that approach. See: >>> >>> https://docs.hhvm.com/hack/lambdas/introduction >> >> For what it's worth I'd rather look at >> >> array_map( $x ==> $x + 1); >> >> than >> >> array_map( fn($x) => $x + 1 ) >> >> Not to mention the former isn't a bc break. > > Neither is supposed to work, though. :) > > Anyhow, I'm not sure whether I'd prefer > > array_map($a, $b, $c ==> $a + $b + $c, $a1, $a2, $a3) > > over > > array_map(fn($a, $b, $c) => $a + $b + $c, $a1, $a2, $a3) > > or maybe > > array_map(fn $a, $b, $c => $a + $b + $c, $a1, $a2, $a3) > > Somehow, I tend to like a trailing keyword for better left-to-right > readability. > > -- > Christoph M. Becker
The RFC states that we're needing some form of a prefix in order to avoid implementing gigantic lexer hacks. HHVM internally implements it by parsing some part of the syntax INSIDE the lexer and then emitting a token before the first parameter to tell the parser where a short Closure begins. Having a normal terminal symbol easily allows the parser to detect short Closures, without any hacks. It is just not a practical option from a technical point of view, and thus not worth even considering. Bob