DIP78 - macros without syntax extensions
Kagamin via Digitalmars-d
digitalmars-d at puremagic.com
Thu May 28 01:14:14 PDT 2015
On Wednesday, 27 May 2015 at 17:03:30 UTC, Artur Skawina wrote:
> That already works. Eg:
>
> alias deduceType(Args...) = typeof({
> // some complex imperative code to deduce the type from
> the args
> import std.range;
> return
> mixin(iota(Args.length).map!q{`Args[`~text(a)~']'}().join("+"));
> }());
>
> struct Foo(T...) {
> deduceType!(T) value;
> }
>
> static assert(is(typeof(Foo!(short, ubyte,
> bool).value)==int));
>
>
> What all these proposals seem to be about is:
>
> a) better introspection (ie exposing a (preferably simplified
> and std) AST)
> b) AST injection
> c) "better" syntax
> d) better "optimizations", meaning skipping the emission of
> code and data
> that is never used at runtime.
>
> artur
Maybe extending capabilities of templates would be a better
direction. They already accept aliases which are essentially
simple hygienic identifier expressions.
More information about the Digitalmars-d
mailing list