On Thu, 14 Mar 2019 at 14:12, Benjamin Morel <benjamin.mo...@gmail.com>
wrote:

> This makes me thinking, has this syntax been considered?
>
> ($x) => { $x * $y }
>
> Nested:
>
> ($x) => { ($y) => { $x * $y } }
>


Wouldn't this have all the same parser problems as the RFC discusses?

The problem, as I understand it, is not avoiding ambiguity, it's avoiding
lookahead. If you write:

$foo = [ ($x) => { $x } ];
$bar = [ ($x) => $x ];

The parser has already consumed " [ ($x) =>" before it can decide if each
($x) is an array key or a closure signature. It's parseable, but only using
one of the workarounds described in the RFC.

If I'm understanding the RFC correctly, the only way to avoid that is to
have closures *start* differently from other valid constructs, because then
the parser doesn't need to recurse / backtrack / etc.

Regards,
-- 
Rowan Collins
[IMSoP]

Reply via email to