Behavior of joining mapresults
Christian Köstlin
christian.koestlin at gmail.com
Wed Dec 20 15:28:00 UTC 2017
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
More information about the Digitalmars-d-learn
mailing list