Kagamin wrote:
bearophile Wrote:

C#2 has lambdas, and C#3 adds closures and more type inferencing, so C#3+ 
supports the following syntaxes:
(int i) => { return i % 3 == 1; } // C#2
i => i % 3 == 1 // C#3
i => { return i % 3 == 1; } // C#3, with statements too
To define a delegate o delegate closure:
Func<int> foo = i => { return i % 3 == 1; };
Func<int> foo = i => i % 3 == 1;
Func<int> bar = () => 2;
But this isn't allowed:
Func<void> bar = () => 2;

Yeah, C# lambdas are the killer feature. Slick, readable, C-compatible. Anders 
knows his job.

Without knowing the person, I disagree you could infer that from C#. What I see above is a smörgåsbord of syntaxes that shoot all over the proverbial barn door in the hope that one of them would strike someone's fancy. That strikes me as a rather lousily done job. Also, it is my perception (and not only mine) that C#'s creator completely missed the power of templates and generative programming.

Let's face it: delegate literals suck a little, mixins as delegates suck a lot, 
the former is too verbose, the latter just sucks.

The logic doesn't quite ring, but passons :o). For what it's worth Walter has got positive feedback left and right from his talk discussing the matter. A simplification in defining function literals is being discussed (omitting the type from the parameters) that would simplify template definitions considerably. Beyond that, I don't feel that changes like moving the parameters on one side or the other of "{" would be Earth-shattering.


Andrei

Reply via email to