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.






_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to