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...