www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - The magic meta namespace (again)

reply "Lars T. Kyllingstad" <public kyllingen.NOSPAMnet> writes:
D's metaprogramming capabilities is one of its main selling points. 
Unfortunately, two of the most important metaprogramming constructs, 
__traits(xxx) and is(typeof(xxx)), are butt ugly.

Don made a proposal to mend this situation, which I've now added to 
Bugzilla. Please vote for it if you care:

   http://d.puremagic.com/issues/show_bug.cgi?id=3702

-Lars
Jan 13 2010
parent Clemens <eriatarka84 gmail.com> writes:
Lars T. Kyllingstad Wrote:

 D's metaprogramming capabilities is one of its main selling points. 
 Unfortunately, two of the most important metaprogramming constructs, 
 __traits(xxx) and is(typeof(xxx)), are butt ugly.
 
 Don made a proposal to mend this situation, which I've now added to 
 Bugzilla. Please vote for it if you care:
 
    http://d.puremagic.com/issues/show_bug.cgi?id=3702
 
 -Lars

I support the proposal. However, unless I'm missing something, we can't completely eliminate is() expression as the proposal states, since they also do other things not covered by compiles(): http://digitalmars.com/d/2.0/expression.html#IsExpression It might be possible to map the other usages of is() to other pseudofunctions in the meta namespace and indeed remove it. On the other hand, the syntax "is(x : int)" seems intuitive enough to me. I wouldn't shed a tear for some of the more obscure ones, like the confusing "is ( Type Identifier )".
Jan 13 2010