Proposal: __traits(code, ...) and/or .codeof

luka8088 luka8088 at owave.net
Thu Oct 11 22:43:04 PDT 2012


On Tuesday, 9 October 2012 at 19:29:34 UTC, F i L wrote:
> On Tuesday, 9 October 2012 at 13:28:55 UTC, luka8088 wrote:
>> Is this at least similar to what you had in mind ?
>>
>> [ ..code.. ]
>
> Yes, I realized, a bit after I originally posted that, that my 
> suggestion was already possible if BankType & Logger where 
> mixin-templates instead of struct/classes. Thanks for the code 
> example though.
>
> I still think an built-in .codeof/.astof would be nice, but 
> what D really needs to achieve this in a syntactically pleasing 
> and powerful way, is 'macro' templates (like Nimrod has) which 
> work on the AST directly. I doubt this is a major concern ATM 
> however.

My point of making this example was to show that nothing is 
missing in D itself. You just need to be more creative. If you 
want to write in a manner more similar to your original example 
(by that I mean without mixin templates) you can use classes, 
class methods can be turned to delegates with their context 
pointer changed before execution, and then you would get the same 
effect. Also having such syntax could be very confusing because 
someone could introduce some syntax which is very similar to D 
but behaves differently and it is embedded in a way that looks 
just like a D code.

Also the idea is to have "// generic code" part in some library 
and not visible to the *user* so the rest of the code would be 
syntactically pleasing. If you check current phobos code, you 
will see that there are some examples of using mixins this way.

Please also check the comments on 
https://github.com/D-Programming-Language/dmd/pull/953 (if you 
haven't done that already).



More information about the Digitalmars-d mailing list