Sampling algorithms for D

Dmitry Olshansky dmitry.olsh at gmail.com
Fri Apr 13 00:59:02 PDT 2012


On 13.04.2012 1:48, Joseph Rushton Wakeling wrote:
> On 12/04/12 21:54, bearophile wrote:

>>> for( t=recordsRemaining-1; t>=limit; --t)
>>> y2 *= top--/bottom--;
>>
>> Generally packing mutation of variables inside expressions is quite
>> bad style. It makes code less easy to understand and translate, and
>> currently it's not defined, just as in C (it will be defined, but it
>> will keep being bad style).
>
> OK. There's one other that should be a point of concern, where I have
>
> return currentRecord++;
>
> ... in one function; I've added a selectedRecord variable to get round
> this.

I believe it's something that reasonable people may disagree on. To me 
it's perfectly easy to see what return x++; does. So is arr[i++] = ..., 
so is arr1[i++] = arr2[j++]. But the downward loops look hairy all the 
time ;)

>
>> Also in D there is (I hope it will not be deprecated)
>> foreach_reverse(), maybe to replace this for().
>

or use some std.range primitives ( I think iota does a [begin, end) range)
foreach( x ; iota(recordRemaining-1, limit+1, -1)){
	y2 *= top--/bottom--;
}

[snip]


-- 
Dmitry Olshansky


More information about the Digitalmars-d-learn mailing list