The Thermopylae excerpt of TDPL available online

Lars T. Kyllingstad public at kyllingen.NOSPAMnet
Thu Oct 29 05:30:40 PDT 2009


Denis Koroskin wrote:
> On Thu, 29 Oct 2009 15:12:51 +0300, Lars T. Kyllingstad 
> <public at kyllingen.nospamnet> wrote:
> 
>> Jason House wrote:
>>> Andrei Alexandrescu Wrote:
>>>
>>>> It's a rough rough draft, but one for the full chapter on arrays, 
>>>> associative arrays, and strings.
>>>>
>>>> http://erdani.com/d/thermopylae.pdf
>>>>
>>>> Any feedback is welcome. Thanks!
>>>  I still think is expressions are a glaring problem. Somewhere in the 
>>> text, you use assert(!is(typeof(... as support for what you're 
>>> talking about. That particular construct feels more like a hack 
>>> someone stumbled into than clean, easy to read code. It's the type of 
>>> thing a programmer will get wring unless they use it frequently. Even 
>>> you've screwed it up in past Phobos releases!  IMHO all is(...) 
>>> expressions should be revisited. Have you written the section(s) on 
>>> them yet?
>>
>> I don't think he uses is(typeof(...)) in the text. The code snippets 
>> in question are marked "Note: normally the code below would not be 
>> included...", and I suppose he's put them there as a reminder for 
>> himself and Walter on what needs to be fixed before the book comes out.
>>
>> I agree with you, though, is(typeof(...)) is quite often misused, or 
>> at least used in an ugly way. Why not use __traits(compiles, ...) 
>> instead?
>>
>> -Lars
> 
> ... which is at least as ugly.


I disagree. Pretend you are just learning D, and you are presented with 
the following two lines of code:

   static assert (is(typeof(XXX));
   static assert (__traits(compiles, XXX));

Which of these would you most likely assume to be a check on whether XXX 
is compilable code?

What I cannot for the life of me understand is WHY the double 
underscores? What's wrong with just "traits"?

-Lars



More information about the Digitalmars-d mailing list