text: var hasOwn = Object.prototype.hasOwnProperty;
  
  module.exports = function (xs, f, acc) {
      var hasAcc = arguments.length >= 3;
      if (hasAcc && xs.reduce) return xs.reduce(f, acc);
      if (xs.reduce) return xs.reduce(f);
      
      for (var i = 0; i < xs.length; i++) {
          if (!hasOwn.call(xs, i)) continue;
          if (!hasAcc) {
              acc = xs[i];
              hasAcc = true;
              continue;
          }
          acc = f(acc, xs[i], i);
      }
      return acc;
  };
  