On Thursday, 7 April 2016 at 09:55:56 UTC, Puming wrote:
When compiled, I get the error:

Error: open path skips field __caches_field_0
source/app.d(19, 36): Error: template instance std.algorithm.iteration.cache!(MapResult!(__lambda1, int[])) error instantiating

That seems like a bug to me and you might want to submit it to the bug tracker. Even converting it to an array first does not seem to work:

import std.stdio : writeln;
import std.algorithm : map, cache, joiner;
import std.array : array;

auto read(int a) {
   return [0, a]; // second level
}

auto mkarray(int a) {
return [-a, a].map!(x=>read(x)).cache.joiner; // to avoid calling read twice
}

void main() {
  auto xs = [1,2 ,3, 4];
  auto r = xs.map!(x=>mkarray(x)).array;
        
  // Both lines below should be equal, but second does not compile
[[0, -1, 0, 1], [0, -2, 0, 2], [0, -3, 0, 3], [0, -4, 0, 4]].cache.joiner.writeln;
  r.cache.joiner.writeln;
}

Above results in following error:
/opt/compilers/dmd2/include/std/algorithm/iteration.d(326): Error: one path skips field __caches_field_0 /d617/f62.d(19): Error: template instance std.algorithm.iteration.cache!(Result[]) error instantiating

Reply via email to