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

Reply via email to