https://d.puremagic.com/issues/show_bug.cgi?id=8755
--- Comment #14 from [email protected] 2014-03-20 18:28:41 PDT --- >Furthermore, it also improves usability by making the seeds passed by >parameter pack, instead of forcing the use of a tuple.< OK. (Despite in a modern language tuples should be built-in, so using them should be natural, common, and syntactically very cheap. In Python/Haskell/Scala code you don't see functions that refrain from accepting a tuple). >Finally, it allows using only 1 seed, in which case, the same seed is >replicated and is used for all the functions.< This is from the unittests: // Compute sum and sum of squares in one pass. // This can be used to compute get the average and standard deviation. // A single seed (0.0) is passed, but it is optional // if the range is not empty. r = a.fold!("a + b", "a + b * b")(0.0); assert(approxEqual(r[0], 35)); // sum assert(approxEqual(r[1], 233)); // sum of squares This is ambiguous, it seems that "a + b" has a seed while "a + b * b" doesn't have a seed. So in my opinion if you give N function then you need to give 0 seeds, or one N-tuple, or N seeds. So I don't like this. >Oh yeah, also, I made it so that when no seed is given, it is an Error to use >an empty range. This is the only case of deviation, but I think having nothrow >justifies it.< I am not sure this is a good idea. Throwing when you give no seed is probably acceptable. But I am not sure. > "iterables" are not supported anymore. I don't understand what this means. The ddocs of fold say: >Note: $(D fold) replaces $(D reduce): It retains the same functionality and behavior, but uses an updated and more convenient interface.< So you retain the same functionality or you don't. If by "iterables" you mean that fold doesn't accept opApply-based iterables then I am against this change, I have plenty of code that opApply-based and I sometimes use reduce on them. -- Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
