code: function foldl(iterator, accumulator, collection) {
    if (typeof iterator !== 'function') {
      throw new TypeError('Expected a function but received a ' + typeof iterator);
    }
  
    each(function(val, i, collection) {
      accumulator = iterator(accumulator, val, i, collection);
    }, collection);
  
    return accumulator;
  }
docs: Reduces all the values in a collection down into a single value. Does so by iterating through the
  collection from left to right, repeatedly calling an `iterator` function and passing to it four
  arguments: `(accumulator, value, index, collection)`.
  
  Returns the final return value of the `iterator` function.
  
  @name foldl
  @api public
  @param {Function} iterator The function to invoke per iteration.
  @param {*} accumulator The initial accumulator value, passed to the first invocation of `iterator`.
  @param {Array|Object} collection The collection to iterate over.
  @return {*} The return value of the final call to `iterator`.
  @example
  foldl(function(total, n) {
  return total + n;
  }, 0, [1, 2, 3]);
  //=> 6
  
  var phonebook = { bob: '555-111-2345', tim: '655-222-6789', sheila: '655-333-1298' };
  
  foldl(function(results, phoneNumber) {
  if (phoneNumber[0] === '6') {
  return results.concat(phoneNumber);
  }
  return results;
  }, [], phonebook);
  // => ['655-222-6789', '655-333-1298']