Proposed D2 Feature: => for anonymous delegates

Pelle Månsson pelle.mansson at gmail.com
Wed Oct 21 05:23:06 PDT 2009


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.



More information about the Digitalmars-d mailing list