On 2010-12-16 11:18, Pelle Månsson wrote:
On 12/15/2010 11:00 PM, Nick Sabalausky wrote:
"Jonathan M Davis"<jmdavisp...@gmx.com> wrote in message
news:mailman.1035.1292441722.21107.digitalmar...@puremagic.com...
On Wednesday, December 15, 2010 11:27:47 Jacob Carlborg wrote:

That was my idea as well, that

@get_set("int", "bar");

could be translated into

mixin(get_set("int", "bar")); just like

just like scope statements are translated into try/catch/finally.

Honestly, I don't see much gain in using @ rather than mixin(). It's a
little
less typing, but that's it.

It does seem like a small difference, just replacing "mixin" with "@" and
removing one layer of parens. But I think that extra layer of parens,
minor
as it seems, makes a big difference in the readability (and
"typeability")
of mixin invocations. Those extra parens do get to be a real bother,
major
visual noise at least to my eyes.


I agree with this. Actually, just removing the parenthesis would be a
huge gain for me.

And it precludes stuff like mixin("lhs " ~ op ~ "
rhs") like happens all the time in overloaded operator functions.


I don't see why these shouldn't work:

@"int foo;";
return @("lhs " ~ op ~ " rhs");

At least with just the "@" part of the proposal. Maybe the delegate thing
might make it tricker, I dunno.


This could work, but I don't think anyone is suggesting completely
replacing the mixin. I think @ could be a function/template thing, and
have strings in a more explicit mixin"";

Then again, inconsistency sucks.

The whole point of the idea/suggestion was to get rid of the strings. Then if the syntax I've suggested is translated into the string mixin syntax we have now then I would be fine with that.

--
/Jacob Carlborg

Reply via email to