
The design is complex, but not needlessly so. Take the "pass an array to a function" design, and think about how you might answer the following questions:
- What if you wanted the function to calculate 5 different statistics, specified by you, and you want to call the function once, not 5 times.
- What if some of those statistics shared some intermediate partial results? You would want the function to only calculate them once, right?
Yes, I see your point. Maybe you could show and compare the two styles and where each is appropriate in the "getting started" portion of the documentation. John Maddock's statistic's library, which is also in the "review queue" presumably will have some overlap with the "accumulators" statistics library. Do you see this as an issue that would need to be addressed. How familiar are you with John's library? I wonder what the result would be if two of boost's best statisticians/mathmaticians got together on a design (one can only dream). I'm also interested your "data-series" library. I download it a few weeks ago, but it had some dependencies on libraries not currently in the boost distribution and I was unable to compile it. I did quickly read the documentation however and it looks to be built upon some of the same concepts of "accumulators" library. I suspect that the idea behind the two libraries (accumulators and data-series) evolved together, given their similar characteristics of how they handle intermediate values. (5 day-moving average of a 10-day moving average kind-of stuff). I have a background in data-series analysis and I'll make an effort to contribute in a more meaningful way when that one comes up for review.