[fpc-devel] Delphi anonymous methods
    Martin 
    lazarus at mfriebe.de
       
    Mon Mar  4 16:10:14 CET 2013
    
    
  
On 04/03/2013 14:49, Sven Barth wrote:
> Am 04.03.2013 15:42, schrieb Martin:
>>
>>> but (4) is powerful enough to really make functional-style programming
>>> practically
>>>
>>
>> I can live with that. I find it odd so that "as" is used in the 
>> reverse order compared to current use.
>
> The use of "as" is based on an idea of mine. C# for example has "=>" 
> and Oxygene has "->" which I didn't consider much Pascal like. Also 
> the compiler needs to know the type of the lambda so it can correctly 
> typecheck its code (after all we have no type inference (yet :P )). So 
> "lambda PROCVARTYPE as EXPR/STMT" came as the most "natural" and 
> Pascal like variant.
First: Stressing out: I don't like it. But if we must have one, the 
lambda approach is the best one yet.
Reason: At least the type is declared at a pascal-like location.
I did not note at first, but the al leaves  the "Result" away. So X+5 
now looks like a statement.
What would happen with
   ATree.VisitPreorder(lambda TVisitor as begin X := min(10,x); X + 5; end);
Reminds me of perl: the last value is the return value.
If you look for the most natural, pascal like (ignoring the part that declaring a function inline, IMHO is not that)
   ATree.VisitPreorder(TVisitor(Result := X + 5);
   ATree.VisitPreorder(TVisitor(begin Result := X + 5; end);
You are type casting the code, into a procedure of the given type.
  
    
    
More information about the fpc-devel
mailing list