What Does Haskell Have to Do with C++?
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Thu Oct 29 07:06:49 PDT 2009
Don wrote:
> Andrei Alexandrescu wrote:
>> Don wrote:
>>> Jeremie Pelletier wrote:
>>>> http://bartoszmilewski.wordpress.com/2009/10/21/what-does-haskell-have-to-do-with-c/
>>>>
>>>>
>>>> Bartosz's second part of 'Template Metaprogramming Made Easy
>>>> (Huh?)', its quite a read :)
>>>
>>> Yes, it is excellent. Two comments:
>>> (1) Bartosz's D examples make me seriously question 'static foreach'
>>> which is scheduled for implementation (bugzilla 3377).
>>> If implemented, it will be a source of frustration, since it will not
>>> be very usable inside templates. The ability to exit from a 'static
>>> foreach' is something which is possible with a 'return'-style syntax,
>>> but is not possible with the 'eponymous template hack'.
>>
>> I think breaking early out of a static foreach is not necessary (but
>> indeed convenient) for writing good loops.
>>
>>> (2) It seems pretty clear that we need to allow the eponymous trick
>>> to continue to work when more than one template member is present. I
>>> think everyone who's ever attempted template metaprogramming in D has
>>> proposed it!
>>
>> Yes, that was on the list for a long time. Bartosz even has
>> participated to many related discussions. I'm surprised the article
>> made it seem an unescapable matter of principles, when it clearly is a
>> trivially fixable bug in the language definition.
>
> Yes, looking at the compiler source, it doesn't look too difficult. The
> fact that something like this works:
>
> template foo(int X)
> {
> static if (bar!(X)) { const int foo = 57; }
> else { const char [] foo = "abc"; }
> }
> makes it pretty clear that the difficult part has already been done.
That sounds great. If you could operate the changes, that would be
awesome. Walter and I had already agreed about the feature.
Andrei
More information about the Digitalmars-d
mailing list