I have noticed an emerging idiom in my code lately: bring together n ranges, transform them to one range using a n-ary function. Currently it's achieved with:

map!((a) {return myNaryFun(a._0, a._1, ...); })(zip(range1, range2, ...));

It's a bit of a nuisanse -- rarely do my transforming functions take tuples, and there's the necessity of composing 2 higher-order ranges to render fairly common functionality. I think Zip could be further parametrized with a zipper function, so that the above code would boil down to:

zip!myNaryFun(range1, range2, ...);

Having looked at Zip's source, such change shouldn't be a big deal. Oh, and the default zipper function would be std.typecons.tuple, not to trouble those not keen on generalization.

Good?

--
Tomek

Reply via email to