Lars T. Kyllingstad wrote:
Bill Baxter wrote:
On Mon, Nov 23, 2009 at 3:12 AM, Don <nos...@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. :)

Oh, me too. But, this establishes a minimum. We've got a very long time to get macros right.


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

Reply via email to