Short list with things to finish for D2

Lars T. Kyllingstad public at kyllingen.NOSPAMnet
Mon Nov 23 06:33:27 PST 2009


Bill Baxter wrote:
> On Mon, Nov 23, 2009 at 3:12 AM, Don <nospam at nospam.com> wrote:
> 
>>> This sounds like a job for better mixin syntax.
>>> .
>>> So let "template#(args)" be equivalent to "mixin(template!(args))".
>>>
>>> Then you can do
>>>
>>> auto statement = db.execute#(`select $visitcars.name from table where
>>> $visitcars.id > 100 && $visitcars.surname Like "A*"`);
>> Yeah, something like that. Or it could mixin automatically. eg if
>> macro foo(args...)
>> foo(args) meant  mixin(foo(args)).
> 
> This is what I've been thinking too.
> But we might want there to be more to a macro than that.  For instance
> most macro parameters are strings and the '(string this, string that,
> string theOther)', list of parameters doesn't look so great.  And
> requiring the strings to be quoted on the calling side, also makes the
> call side rather ugly.  It may be better to have arguments
> automatically convert to some sort of AST type which supports some
> introspection, and can be converted back to a string of code easily.
> 
> So I think jumping on just making macro mean "mixin automatically"
> right now may limit our future choices too much.

I think the community has come to expect a lot more from the macro 
keyword. I, at least, would be disappointed if this is what comes out of 
it. :)

How about

     auto template MixMeInAutomatically(T) { ... }

     void main()
     {
         MixMeInAutomatically!int;
         ...
     }

Would this be ambiguous? It would be using auto for something completely 
new, but it would at least make sense. (More so than macro, in my opinion.)

-Lars



More information about the Digitalmars-d mailing list