code: function compose() {
        var funcs = arguments,
            funcsLength = funcs.length,
            length = funcsLength;
  
        while (length--) {
          if (!isFunction(funcs[length])) {
            throw new TypeError(funcErrorText);
          }
        }
        return function() {
          var length = funcsLength - 1,
              result = funcs[length].apply(this, arguments);
  
          while (length--) {
            result = funcs[length].call(this, result);
          }
          return result;
        };
      }
docs: Creates a function that is the composition of the provided functions,
  where each function consumes the return value of the function that follows.
  For example, composing the functions `f()`, `g()`, and `h()` produces `f(g(h()))`.
  Each function is executed with the `this` binding of the composed function.
  
  @static
  @memberOf _
  @category Functions
  @param {...Function} [funcs] Functions to compose.
  @returns {Function} Returns the new composed function.
  @example
  
  var realNameMap = {
  'pebbles': 'penelope'
  };
  
  var format = function(name) {
  name = realNameMap[name.toLowerCase()] || name;
  return name.charAt(0).toUpperCase() + name.slice(1).toLowerCase();
  };
  
  var greet = function(formatted) {
  return 'Hiya ' + formatted + '!';
  };
  
  var welcome = _.compose(greet, format);
  welcome('pebbles');
  // => 'Hiya Penelope!'