"Jacob Carlborg" <[email protected]> wrote in message
news:[email protected]...
> On 2010-12-14 19:13, Nick Sabalausky wrote:
>> "Graham St Jack"<[email protected]> wrote in message
>> news:[email protected]...
>>>
>>> What you are suggesting here seems to be a way to dramatically reduce
>>> the
>>> complexity of code that generates source-code and mixes it in. I think
>>> something like that is needed before this mind-bogglingly powerful
>>> feature
>>> of D can realise its potential.
>>>
>>
>> I think a decent string-template library could probably come very close
>> to
>> the proposal without needing any language changes at all:
>>
>> string get_set(T, string name)()
>> {
>> return
>> q{
>> @type _...@name;
>>
>> @type @name ()
>> {
>> return _...@name;
>> }
>>
>> @type @name (@type @name)
>> {
>> return _...@name = @name;
>> }
>> }.replace( ["@type": T.stringof, "@name": name] );
>> }
>>
>> class Foo
>> {
>> mixin(get_set!(int, "bar")());
>> }
>>
>> There are definitely some things about the proposal that are better than
>> with this, but I just wanted to point out that the value of the proposal
>> should probably be evaluated against something roughly like the above
>> rather
>> than something that does a bunch of procedural string splicing.
>
> The whole point of the idea was to get rid of the strings and the mixin
> expression (as it looks like to day).
>
While I'm not necessarily opposed to the idea of getting rid of the strings,
I guess I don't really see what improvement your proposal provides other
than not having to manually specify the mapping of "replace what identifier
with what data".
Getting rid of the "mixin" I see as a separate issue. We could just as
easily say that given the function "string get_set(...)":
@get_set("int", "bar");
or
@get_set int bar;
...Is shorthand for, or is even the new syntax for:
mixin(get_set("int", "bar"));