Proposed D2 Feature: => for anonymous delegates

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Wed Oct 21 04:57:41 PDT 2009


Pelle Månsson wrote:
> 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?

Dropping the "auto" should yield a compilable program. Please report 
that to bugzilla (http://d.puremagic.com/issues/enter_bug.cgi) or let me 
know and I'll do so.

Thanks!

Andrei



More information about the Digitalmars-d mailing list