Currently std.algorithm.nWayUnion requires an array of ranges,
because it internally keeps them in a heap, to be fast when you
give it hundreds+ of ranges.
But in some cases I'd like to merge different types of ranges,
that I can't put in an array. Is this use case worth supporting
(usually the number of ranges is small so for such use cases a
heap is not so needed)?
import std.algorithm: nWayUnion, map;
import std.range: iota;
import std.typecons: tuple;
void main() {
auto a = iota(10);
auto b = [3, 6, 9];
auto c = iota(11).map!q{a * a};
auto r = nWayUnion(tuple(a, b, c));
}
(Or maybe I am missing something, and this is already possible in
Phobos. This happened some times in past because it's not easy to
fully understand the high flexibility of std.algorithm).
Bye,
bearophile