How about macro == symbol for mixin statement? [was Re: Member functions C to D]

Christopher Wright dhasenan at gmail.com
Fri Oct 9 15:36:22 PDT 2009


Yigal Chripun wrote:
> On 09/10/2009 00:38, Christopher Wright wrote:
>> It makes macros highly compiler-specific, or requires the compiler's AST
>> to be part of the language.
>>
>> Nemerle took the nuclear option, and its macros are all-powerful. That's
>> a reasonable way of doing things. I'd be happy with a more restricted
>> system that's easier to standardize, especially if it got rid of all the
>> hacky string manipulation in current D metaprogramming. (Seriously, even
>> __traits returns string arrays for a lot of stuff. It's ridiculous.)
> 
> It doesn't have to be compiler specific. all is needed is a standardized 
> API to the compiler.

Right. It adds something huge that's normally compiler-specific to the 
language. This makes me uncomfortable. It greatly increases the 
difficulty of implementation.

> What's so hackish about that?

Reread. Current D metaprogramming is hackish. Nemerle's isn't.

> many large modular systems do exactly that: eclipse, firefox, even the 
> OS itself. Unix provides syscalls which *are* an API to the OS.
> 
> a properly designed API doesn't have to expose internal implementation 
> details.
> 
> btw, in Nemerle they have syntax to compose/decompose AST specifically 
> so they don't need to expose the internal structure of the AST.

So they have a separate object model for the syntax tree that macros can 
affect. This is what I would recommend for D.


More information about the Digitalmars-d-learn mailing list