https://d.puremagic.com/issues/show_bug.cgi?id=8755
--- Comment #16 from [email protected] 2014-03-21 01:44:56 PDT --- (In reply to comment #15) > Why is reduce (sorry, fold) allowing multiple function arguments in the first > place? > > If you want to compose functions to avoid another O(n) iteration, then you > should compose the reduce function to return a tuple yourself. > > That way it is clear what the code is doing, instead of this magic N-tuple > special case return type. You shouldn't have to need to look at what the code is doing. It's a library. We accept multiple function arguments because: auto minmax = myRange.reduce!(min, max)(); Is incredibly straight forward and convenient. That said, the design doesn't actually prevent you from doing it as you are asking for: //----- auto first = tuple(myRange.front, myRange.front); myRange.popFront(); auto minmax = reduce!((a, b) => tuple(min(a[0], b), max(a[1], b)))(first, myRange); writeln(minmax); //---- It works, but you'll have a tough time selling it to me. The only argument in favor of this approach, is if you need the return type to be different from the tuple type. But as I said, both approaches can co-exist, so why hold out? -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
