<p>Am 04.03.2013 22:41 schrieb "Martin" <<a href="mailto:lazarus@mfriebe.de">lazarus@mfriebe.de</a>>:<br>
><br>
> On 04/03/2013 19:16, Alexander Klenin wrote:<br>
>>><br>
>>> See above. The omission "of Result :=" is IMHO not desirable.<br>
>><br>
>> Are you sure? Note that *any* useful single-statement function will<br>
>> start exactly like this<br>
><br>
> If a = x then Result := 4 else Result := 5;<br>
><br>
> Single statement, but starts different.  And is useful.<br>
><br>
> But that isn't why I replied again.<br>
><br>
> Reading the shortened version versus the full anonymous procedure (with var, const, type....) and I realized, that thi's a 2 entirely different things.<br>
><br>
> The above is NOT an anonymous function. It is a reference to a term.<br>
> I am not voting for it, but IF it was done, then it should have its own keyword.<br>
><br>
> It would not allow for var, type or anything (and it will only work for functions, not procedures.)<br>
>    a.sort(LambdaTerm TMyCompare do x > y)<br>
> or<br>
>    a.sort(TermRef TMyCompare(x > y) )</p>
<p>This is basically what my idea behind the lambs syntax was: only one expression or statement and no variable, type or constant declarations. And for more complex use case there are either Delphi's anonymous functions or FPC's nested procedures/functions.</p>

<p>> anonymous function, then would *always* require<br>
>    a. sort( Function; prototype TMyCompare; [var ...] begin ... end )<br>
><br>
> the protopybe (modifier) could work for named procedures too. (THey would be required NOT to have any params)<br>
>   Function Foo; prototype TMyCompare;<br>
>   [var ...]<br>
>   begin ... end</p>
<p>Ah! Now with the named example I understand the use of the ";" after the "function"...</p>
<p>Regards,<br>
Sven</p>