DIP78 - macros without syntax extensions

Idan Arye via Digitalmars-d digitalmars-d at puremagic.com
Wed May 27 08:47:00 PDT 2015


On Wednesday, 27 May 2015 at 08:14:36 UTC, Kagamin wrote:
> On Tuesday, 26 May 2015 at 23:47:41 UTC, Dennis Ritchie wrote:
>> If this proposal is considered, it is required to propose to 
>> look
>> at the implementation of macros in Nemerle. Many believe that 
>> it
>> is in Nemerle macros implemented the most successful compared 
>> to
>> other modern languages. Of course, the most successful macros 
>> are
>> implemented in Lisp, but the syntax of the language is poor :)
>
> The problem with declarative macro system is that you would 
> need to learn yet another language. Possibly turing-complete. 
> And a declarative turing-complete language is an overkill both 
> for usage and implementation. Imperative macros get it done in 
> an intuitive way in the existing language.

But D already has such a declarative language - the one used in 
template metaprogramming. I think a macro system that plays well 
with that template metaprogramming sub-language will be really 
nice. For example, CTFE that works like a macro and returns 
types/aliases:

     Auto deduceType(Auto args) {
         // some complex imperative code to deduce the type from 
the args
         return DeducedType;
     }

     struct Foo(T...) {
         deduceType(T) value;
     }


More information about the Digitalmars-d mailing list