Metaprogramming in D : Some Real-world Examples
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Tue Nov 10 20:38:31 PST 2009
grauzone wrote:
> Lars T. Kyllingstad wrote:
>> Jacob Carlborg wrote:
>>> On 11/10/09 01:27, Bill Baxter wrote:
>>>> On Mon, Nov 9, 2009 at 4:09 PM, Walter Bright
>>>> <newshound1 at digitalmars.com> wrote:
>>>>> Looks like Bill Baxter is giving a presentation on D Nov. 18!
>>>>>
>>>>> http://www.nwcpp.org/
>>>>
>>>> Yep, that's right, and I'd be quite grateful to you smart folks here
>>>> if you could share your meta-programming favorites with me! If
>>>> you've got a real-world example of meta-programming in D that you
>>>> think is particularly handy, then please send it my way
>>>>
>>>> I'm looking for small-but-useful things that are easy to explain, and
>>>> make something easier than it would be otherwise. Things like places
>>>> where static if can save your butt, or loop unrolling, and passing
>>>> code snippets to functions like in std.algorithm.
>>>>
>>>> Things like a compile-time raytracer or regexp parser (though quite
>>>> cool!) are not what I'm after. Too involved for a short talk.
>>>>
>>>> --bb
>>>
>>> This is invaluable to me, which makes it possible to do some form of
>>> duck typing at compile time:
>>>
>>> static if (is(typeof({
>>> /* does this compile */
>>> })))
>>
>> There are forces at work (Don, that is) attempting to get rid of that
>> very construct and replace it with something better:
>>
>> http://www.digitalmars.com/d/archives/digitalmars/D/Proposal_Replace_traits_and_is_typeof_XXX_with_a_magic_namespace_._99914.html
>>
>>
>> In my humble opinion, is(typeof({...})) is an ugly creature. I really
>> don't think it should be put under a spotlight as a good example of D
>> metaprogramming. If anything, please use __traits(compiles, {...})
>> instead.
>
> Who cares about "ugly" syntax, if the idea is bad in the first place?
I think testing types during compilation isn't bad. Under what
circumstances is it?
Andrei
More information about the Digitalmars-d-announce
mailing list