code: function _reduce(accumulator, iterable, initializer) {
  
    for (let item of iterable) {
      initializer = accumulator(initializer, item);
    }
  
    return initializer;
  }
docs: Applies the accumulator function iteratively on the last return value of the
  accumulator and the next value in the input iterable. The initial value is
  the initializer parameter.
  
  @example
  _reduce( ( x , y ) => x + y , range( 10 ) , 0 ) ; // returns 45
  
  @example
  _reduce( ( x , y ) => x + y , range( 10 ) , 100 ) ; // returns 145
  
  @param {Function} accumulator - The accumulator, a 2-ary function.
  @param {Iterable} iterable - The input iterable.
  @param {Object} initializer - The initial value of the reduction.
  @returns {Object} - The reduction of the elements of <code>iterable</code>.