code: function partial(fn) {
          for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
              args[_key - 1] = arguments[_key];
          }
  
          return function () {
              return fn.apply(this, args.concat(toArray(arguments)));
          };
      }
docs: Partially apply a function by filling in any number of its arguments, without changing its dynamic this value.
  @param {!Function} fn the function to partially apply arguments to
  @param {...} args the arguments to be partially applied
  @returns {Function} the new partially applied function