<div><div>I'd like to support N-ary map, ie std.algorithm.map that takes 1 or more ranges as arguments and operates lazily on those.</div><div><br></div><div>example: suppose we have a 2 argument function, eg : auto absDiff(a,b){...}</div>
<div>before:</div><div><div>  zip(a,b).map!(u=>absDiff(u[0],u[1])).reduce!fun;</div><div>after:</div><div></div><div>  map!absDiff(a,b).reduce!fun;</div></div><div><br></div><div>currently the signature of std.algorithm.map is:</div>
<div>auto map(Range)(Range r) if (isInputRange!(Unqual!Range));</div></div><div>new signature:</div><div>auto map(Range...)(Range r) if (Range.length>0 && allSatisfy!(isInputRange!Unqual,Range));</div><div><br>
</div><div>implementation:</div><div>it can be implemented using zip and expand, but there is room for more optimization potentially. Or will LDC/GDC be smart enough to have zero overhead when using zip?</div><div><br></div>
<div>advantages:</div><div>concise and natural syntax</div><div>reduces need for zip, and adds optimization opportunities</div><div>reduces need for using foreach when zip is too confusing</div><div><div>no code breakage</div>
</div><div><br></div>