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.