When working with json data files, that we're a little bigger than convenient I stumbled upon a strange behavior with joining of mapresults (I understand that this is more or less flatmap). I mapped inputfiles, to JSONValues, from which I took out some arrays, whose content I wanted to join. Although the joiner is at the end of the functional pipe, it led to calling of the parsing code twice. I tried to reduce the problem:
#!/usr/bin/env rdmd -unittest unittest { import std.stdio; import std.range; import std.algorithm; import std.string; auto parse(int i) { writeln("parsing %s".format(i)); return [1, 2, 3]; } writeln(iota(1, 5).map!(parse)); writeln("-------------------------------"); writeln((iota(1, 5).map!(parse)).joiner); } void main() {} As you can see if you run this code, parsing 1,..5 is called two times each. What am I doing wrong here? Thanks in advance, Christian