function incrsummary() {
	var midrange;
	var variance;
	var skewness;
	var kurtosis;
	var summary;
	var count;
	var range;
	var stdev;
	var mean;
	var max;
	var min;
	var sum;

	// Incremental count:
	count = incrcount();

	// Sum:
	sum = incrsum();

	// Sample mean:
	mean = incrmean();

	// Unbiased sample variance:
	variance = incrvariance();

	// Corrected sample standard deviation:
	stdev = incrstdev();

	// Corrected sample skewness:
	skewness = incrskewness();

	// Corrected excess sample kurtosis:
	kurtosis = incrkurtosis();

	// Maximum value:
	max = incrmax();

	// Minimum value:
	min = incrmin();

	// Range (i.e., max-min):
	range = incrrange();

	// Mid-range:
	midrange = incrmidrange();

	// Initial an object for tracking state:
	summary = {};

	return accumulator;

	/**
	* If provided a value, the accumulator function returns an updated summary. If not provided a value, the accumulator function returns the current summary.
	*
	* @private
	* @param {number} [x] - new value
	* @returns {Object} summary
	*/
	function accumulator( x ) {
		if ( arguments.length === 0 ) {
			return summary;
		}
		summary.count = count( x );
		summary.max = max( x );
		summary.min = min( x );
		summary.range = range( x );
		summary.midrange = midrange( x );
		summary.sum = sum( x );
		summary.mean = mean( x );
		summary.variance = variance( x );
		summary.stdev = stdev( x );
		summary.skewness = skewness( x );
		summary.kurtosis = kurtosis( x );
		return summary;
	}
}
Returns an accumulator function which incrementally computes a statistical summary.

@returns {Function} accumulator function

@example
var accumulator = incrsummary();

var summary = accumulator();
// returns {}

summary = accumulator( 2.0 );
// returns {...}

summary = accumulator( -5.0 );
// returns {...}

summary = accumulator();
// returns {...}