Proposed D2 Feature: => for anonymous delegates

Pelle Månsson pelle.mansson at gmail.com
Wed Oct 21 03:35:41 PDT 2009


Andrei Alexandrescu wrote:
> Pelle Månsson wrote:
>> Jason House wrote:
>>> Andrei Alexandrescu Wrote:
>>>
>>>> Jason House wrote:
>>>>> Am I the only one that has trouble remembering how to write an inline
>>>>> anonymous delegate when calling a function? At a minimum, both Scala
>>>>> and C# use (args) => { body; } syntax. Can we please sneak it into
>>>>> D2?
>>>> We have (args) { body; }
>>>>
>>>> Andrei
>>>
>>> Somehow, I missed that. What kind of type inference, if any, is 
>>> allowed? Scala and C# allow omiting the type. Lately I'm doing a lot 
>>> of (x) => { return x.foo(7); } in C# and it's nice to omit the 
>>> amazingly long type for x. The IDE even knows the type of x for 
>>> intellisense... I think scala would allow x => foo(7), or maybe even 
>>> => _.foo(7) or even _.foo(7). I haven't written much scala, so I may 
>>> be way off...
>>
>> Recent experiments by myself indicate you cannot omit the type and you 
>> cannot use auto for the type, so you actually need to type your 
>> VeryLongClassName!(With, Templates) if you need it.
>>
>> I sort of miss automatic type deduction.
> 
> Actually, full type deduction should be in vigor, but it is known that 
> the feature has more than a few bugs. Feel free to report any instance 
> in which type deduction does not work in bugzilla.
> 
> Andrei

int f(int delegate(int) g) {
     return g(13);
}
void main() {
     f((auto x) { return x+13; });
}

This does not compile in D v2.034. Am I missing something?



More information about the Digitalmars-d mailing list