change mixins

BCS none at anon.com
Sun Feb 14 22:48:26 PST 2010


Hello Nick,

> "BCS" <none at anon.com> wrote in message
> news:a6268ff103d38cc7ba48d6fabda at news.digitalmars.com...
> 
>> Hello Nick,
>> 
>>> I *definitely* want that for string mixins of both the
>>> template-generated and ctfe-generated varieties.
>>> 
>> Why? I don't see any reason aside from documentation to do it.
>> 
> Well, for one thing, not having it forces any code using my
> custom-assert library to look like this crap...
> 
> mixin(deferAssert!(`foo == 3 || foo > 5`, "foo is bad"));
> 
> ...which understandably no one wants to touch and I *absolutely* don't
> blame them one bit. Compare that to this...
> 
> deferAssert!(`foo == 3 || foo > 5`, "foo is bad");
> 
> ...ahhh, now I can actually see what the hell's going on!

1) I don't see a lot of difference (I see a /little/ difference), the extra 
mixin() doesn't get in the way of /me/ seeing what going on.

2) I'd prefer more general solution, like being able to extract the original 
string from a lazy parameter or pass expressions as alias:

void deferAssert!(alias exp, string message)
{
     if(!exp) // deferAssert gets instanced as a local function (or gets 
a hidden delegate parameter or wherever)
        writef("%s failed: %s\n", exp.stringof, message);
}

3) anything that passes code around as strings looks like a hack (sometimes 
necessary) to me and has so many downside relating to tools (particularly 
syntax highlighters) that the mixin() gets lost in the noise.

void deferAssert!(foo == 3 || foo > 5, "foo is bad"); // ...ahhh, now I can 
really see what the hell's going on, and so can my tools!

--
<IXOYE><





More information about the Digitalmars-d mailing list