Proposed D2 Feature: => for anonymous delegates

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Wed Oct 21 06:17:04 PDT 2009


Pelle Månsson wrote:
> Andrei Alexandrescu wrote:
>> 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
> 
> I'm afraid I do not understand, simply omitting the auto does not 
> compile either. Which one is the bug?
> 
> I'm putting this on the bugzilla now.

The version with "auto" shouldn't compile, the one without should. Thanks!

Andrei



More information about the Digitalmars-d mailing list