plans for macros
janderson
askme at me.com
Fri May 16 00:13:27 PDT 2008
Yigal Chripun wrote:
> janderson wrote:
> <Snip>
> > Just a though. Couldn't templates simply be extended to handle macro
>> cases so that we get supper powerful templates rather then another
>> feature that works independently.
>>
>> ie I see macros working like:
>>
>> macro void MyMacro(foo)
>> {
>> foo;
>> }
>>
>> MyMacro(X + 5 * 10);
>>
>> Where as we could make a template do the same job,
>>
>> void MyMacro(alias foo)()
>> {
>> foo;
>> }
>>
>> MyMacro!(X + 5 * 10); //Compiler figures that it can drop the second ()
>> because its zero params.
>>
>> Any cases that you need for a macro should be put into templates instead
>> IMHO. That will give up the flexibility to combine the power of the
>> template with the syntax sugar of a macro.
>>
>> -Joel
>
> first, I'd also try using a mixin to solve this.
> socond, I too think that having macros as an independent new feature
> adds unneeded redundancy. I think that macros would provide a super set
> of the abilities of templates, so I suggest, instead of you proposal of
> adding macro capabilities to templates, to do the exact opposite.
> i.e. provide an "upgrade path" from your current template solution to
> the more general macro solution. the current syntax will still work, but
> the compiler would allow the user to also treat a template as a macro.
> the end result should be, that the client code could make use of the
> syntax sugar of macros even if the current implementation is a template.
I pretty much think we are saying the same thing except on one point.
The only problem I have with switching the definition part of the code
to a macro syntax is that all the code we have already written in
templates becomes either deprecated or alternatively we have a bloated
language. I think adding a couple of extra bits of syntax sugar to
templates is the way to go. As the community discover some other
features that map well into "macros"/templates should the design branch
yet again (ie give it a even newer name)?
-Joel
More information about the Digitalmars-d-learn
mailing list