Your example did not contain any definitions of functions in functions.
That's sort of debatable, since x(){} is just a shorthand syntax for x(lambda(){});, which does define a local function. :)
I do see the conflict, however.
Well, yes, but the need for ; (or }, or some other definite end marker) to terminate the top level expression applies to explicit lambda expressions as well. Although less likely to appear in actual code
mixed q = lambda(){}-x;
is also syntactically valid (x would need to be an object with a ``- method for the code to be semantically valid as well).
Actual function definitions are a bit different since there is no need for them to be expressions. Currently it seems like they _are_ expressions in the grammar, but I can't quite figure out why...
pike-devel@lists.lysator.liu.se