code: function partial(func) {
      var args = slice.call(arguments, 1),
          argsLength = args.length;
  
      return function() {
        var result,
            others = arguments;
  
        if (others.length) {
          args.length = argsLength;
          push.apply(args, others);
        }
        result = args.length == 1 ? func.call(this, args[0]) : func.apply(this, args);
        args.length = argsLength;
        return result;
      };
    }
docs: Creates a new function that, when called, invokes `func` with any additional
  `partial` arguments prepended to those passed to the partially applied
  function. This method is similar `bind`, except it does **not** alter the
  `this` binding.
  
  @static
  @memberOf _
  @category Functions
  @param {Function} func The function to partially apply arguments to.
  @param {Mixed} [arg1, arg2, ...] Arguments to be partially applied.
  @returns {Function} Returns the new partially applied function.
  @example
  
  var greet = function(greeting, name) { return greeting + ': ' + name; };
  var hi = _.partial(greet, 'hi');
  hi('moe');
  // => 'hi: moe'