zip vs. lockstep -- problems accessing elements by ref
Joseph Rushton Wakeling
joseph.wakeling at webdrake.net
Sat Jun 29 02:42:14 PDT 2013
On 06/28/2013 03:19 PM, Joseph Rushton Wakeling wrote:
> Consider the following equivalent code using zip and lockstep respectively to
> iterate over the entries in an array and set their values:
>
> auto arr1 = new double[10];
> foreach(i, ref x; zip(iota(10), arr1))
> {
> x = i;
> }
> writeln(arr1);
>
> auto arr2 = new double[10];
> foreach(i, ref x; lockstep(iota(10), arr2))
> {
> x = i;
> }
> writeln(arr2);
>
> The first array will still be full of nan's when it is output, while the second
> will have values set correctly. Can anyone offer a reasonable explanation why
> this should be so? It looks like a bug to me, or at best an unreasonable
> difference in functionality. :-(
... ping ...?
The particular motivation here is bearophile's proposal to deprecate lockstep in
favour of zip:
http://d.puremagic.com/issues/show_bug.cgi?id=8155
That's clearly not a viable course until one can 's/lockstep/zip/' and have the
altered code Just Work.
I should add that bearophile has been fantastic in suggesting alternative design
patterns that don't require either lockstep _or_ zip, but I still think this
lockstep/zip discrepancy needs resolving.
More information about the Digitalmars-d-learn
mailing list