How can I dump an expression into log and execute it

Ary Borenszweig via Digitalmars-d digitalmars-d at puremagic.com
Mon Jul 14 09:10:52 PDT 2014


On 7/14/14, 12:29 PM, Dicebot wrote:
> On Monday, 14 July 2014 at 15:13:21 UTC, Timon Gehr wrote:
>> On 07/14/2014 11:55 AM, Dicebot wrote:
>>> I must admit D is far from perfect in that regard because operator
>>> overloading is still not limited enough
>>
>> There is no real point in limiting it at all. It is just a matter of
>> naming your functions properly.
>>
>> auto subtract(int a, int b){ return a+b; }
>
> Same principle of surprise minimization. Reader expects arbitrary
> actions done by function call. Reader expects arithmetical semantics
> from arithmetical operations. I don't see "you can change anything"
> language working for any large team production.

Macros are not "you can change anything". Macros generate code based on 
AST nodes. No surprise at all. You read the comments on what the macro 
does (or look at the code) and that's it.

Making macros look like regular function calls, that you might not like. 
For me, it makes the code more readable. Instead of this:

class Foo
   mixin(property :foo)
end

Or this:

class Foo
   property!(:foo)
end

You simple write this:

class Foo
   property :foo
end

And it's super clear to everyone what this does (again: or read the docs 
or check the source code to see what this does).

What kind of "macros that change anything" you have in mind?


More information about the Digitalmars-d mailing list