whole_func_string: function wrap(value, wrapper) {
        if (!isFunction(wrapper)) {
          throw new TypeError;
        }
        return function() {
          var args = [value];
          push.apply(args, arguments);
          return wrapper.apply(this, args);
        };
      }
func_code_string: function wrap(value, wrapper) {
        if (!isFunction(wrapper)) {
          throw new TypeError;
        }
        return function() {
          var args = [value];
          push.apply(args, arguments);
          return wrapper.apply(this, args);
        };
      }
func_documentation_string: Creates a function that provides `value` to the wrapper function as its
  first argument. Additional arguments provided to the function are appended
  to those provided to the wrapper function. The wrapper is executed with
  the `this` binding of the created function.
  
  @static
  @memberOf _
  @category Functions
  @param {*} value The value to wrap.
  @param {Function} wrapper The wrapper function.
  @returns {Function} Returns the new function.
  @example
  
  var hello = function(name) { return 'hello ' + name; };
  hello = _.wrap(hello, function(func) {
  return 'before, ' + func('moe') + ', after';
  });
  hello();
  // => 'before, hello moe, after'