The Thermopylae excerpt of TDPL available online

Michael Rynn michaelrynn at optusnet.com.au
Tue Nov 3 04:43:35 PST 2009


On Thu, 29 Oct 2009 12:23:18 -0500, Andrei Alexandrescu
<SeeWebsiteForEmail at erdani.org> wrote:

>Leandro Lucarella wrote:
>> Leandro Lucarella, el 29 de octubre a las 13:21 me escribiste:
>>> Andrei Alexandrescu, el 28 de octubre a las 23:38 me escribiste:
>>>> 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!


Good chapter, I learned some things, and I liked the Unicode
exposition.

Pg 114.  5   

Did not understand why this code is a compiler bug.   To me its a
'feature', consistant with behaviour of underlying realloc, capacity
and length management, and consistant with having average good
efficiency for a ~= item. I do not want a clever compiler trying to
predict existance of an array aliasing.

Its a nice example of aliasing, only it seems just a bit harsh on the
poor old compiler.  Not good to have every page virtually subtitled ,
nice language, shame about the compiler..

I would like to see a function in std.array for D2, that does
efficiently what the example asserts should be possible, to force a
new allocation when required, in a simple one line statement,
syntactically sugared.

// At this point a and b are adjacent
//a ~= [0, 0, 0, 0];
/// Concantenation function which will gaurantee to return array using
only single new memory allocation containing a ~ b, for when you
really need it.
// T[] concat(T[] a, T[] b)  // maybe  more varargs

a = a.concat([0, 0, 0, 0]);   

// OR in 2 lines just make the intention clear

auto c = a ~ b; // this should work just the same?
a = c;

assert(b == [40, 50, 60, 70]); // passes; a got reallocated

P114. 40

array.length op=   something.
// compiler  message that array.length is not an lvalue.

I like the compiler message.    Admittedly I would like the shorthand
too, but I do not see it as bug, because it reflects the C heritage.
Another feature.   Would like at least these bugs to be features..

P 123.  30
You didn't mention the in operator for AA returns a pointer to the
keys value, or null  This got me a little worried, as I liked using
the value returned by in operator, and had not used .get at all.



P 128 20-25

.."To support this encoding, Unicode
allocates no valid characters to numbers in the range 0xD800 through
0xDBFF"

Typo  ,   should be:   0xD800 through 0xDFFF here.

-- 
Michael Rynn <michaelrynn at optusnet.com.au>






More information about the Digitalmars-d mailing list