code: function countBy(iterable, iteratee=identity) {
    let result = Map()
    for (let value of iterable) {
      result = result.update(iteratee(value), 0, (x) => x + 1)
    }
    return result
  }
docs: Creates a Map composed of keys generated from the results of running
  each element of `iterable` through `iteratee`. The corresponding value of
  each key is the number of times the key was returned by `iteratee`. The
  iteratee is invoked with one argument: (value).
  
  @static
  @memberOf _
  @category iterable
  @param {Function} [iteratee=_.identity]
  The iteratee to transform keys.
  @example
  
  _.countBy([6.1, 4.2, 6.3], Math.floor)
  // => { '4': 1, '6': 2 }