change mixins

Denis Koroskin 2korden at gmail.com
Sun Feb 14 16:33:26 PST 2010


On Mon, 15 Feb 2010 02:28:38 +0300, Andrei Alexandrescu  
<SeeWebsiteForEmail at erdani.org> wrote:

> Denis Koroskin wrote:
>> On Mon, 15 Feb 2010 00:31:29 +0300, Walter Bright  
>> <newshound1 at digitalmars.com> wrote:
>>
>>> Right now, mixins are defined and used as:
>>>
>>>     template foo(T) { declarations... }
>>>
>>>     mixin foo!(int) handle;
>>>
>>> The proposal is to switch it around:
>>>
>>>     mixin template foo(T) { declarations... }
>>>
>>>     foo!(int) handle;
>>>
>>> to follow the notion that mixin templates are very different from  
>>> regular templates, and that should be reflected in their definition  
>>> rather than use.
>>>
>>> What do you think?
>>  I support the change, expect that I believe mixing in the mixin  
>> template should involve the "mixin" keyword.
> [snip previous proposal]
>
> The hope with the proposed change is to leverage existing mixin  
> implementation into a solid and useful facility that could actually  
> obviate the need for macros. I reckon there is a lot of value in the  
> current mixin template idea, but it's just packaged the wrong way.  
> Requiring mixin on the call side (something that many have complained  
> about) would, in my opinion, keep the feature packaged the wrong way.
>
> As an example of where we want to take this, consider an interpolation  
> facility. The expression:
>
> interp!"a = $a and b = $b\n"
>
> expands into:
>
> "a = ", a, " and b = ", b, "\n"
>
> which you can writeln, pass to text or whatnot.
>
>
> Andrei

Point taken. I agree this makes code look cleaner.



More information about the Digitalmars-d mailing list