Open source dmd on Reddit!

grauzone none at example.net
Fri Mar 6 20:02:23 PST 2009


Ary Borenszweig wrote:
> Michel Fortin escribió:
>> On 2009-03-06 14:35:59 -0500, Walter Bright 
>> <newshound1 at digitalmars.com> said:
>>
>>> Andrei Alexandrescu wrote:
>>>> "Can't live without bitfields! Give me bitfields and I'll lift the 
>>>> Earth!"
>>>>
>>>> "Here they are, std.bitmanip. Well-defined and more portable and 
>>>> flexible than C's."
>>>>
>>>> "Meh, don't like the definition syntax."
>>>
>>> Classic.
>>
>> Well, he certainly has a point. Compare this:
>>
>>     mixin(bitfields!(
>>         uint, "x",    2,
>>         int,  "y",    3,
>>         uint, "z",    2,
>>         bool, "flag", 1));
>>
>> With this:
>>
>>     uint x : 2;
>>     int  y : 3;
>>     uint z : 2;
>>     bool flag : 1;
>>
>> The second is certainly prettier and more readable.
>>
>> Does it matter much? Not to me; I rarely use bit fields. If I were 
>> using them a lot, perhaps I'd be more concerned.
>>
>> While I don't care very much about bitfields, that "mixin(tmpl!(...))" 
>> syntax is awful. "mixin tmpl!(...)" is better, but has too many 
>> limitations, and it isn't always clear for the user which one should 
>> be used. Couldn't D2 get a better syntax for mixins?
> 
> Well, now the \ is character if free:
> 
> \bitfields(
>   unit, "x", 2,
>   int, "y", 3,
>   uint, "z", 2,
>   bool, "flag", 1,
> );
> 
> But I think it looks ugly: the \ is "lambda" in some languages and this 
> also reminds me of LaTeX... :-P

String mixins are awful in the first place. The only thing that could 
save this kind of thing are AST macros.


More information about the Digitalmars-d-announce mailing list