function curry(func, arity) {
      if (typeof arity != 'number') {
        arity = +arity || (func ? func.length : 0);
      }
      return createWrapper(func, CURRY_FLAG, arity);
    }
Creates a function which accepts one or more arguments of `func` that when
invoked either executes `func` returning its result, if all `func` arguments
have been provided, or returns a function that accepts one or more of the
remaining `func` arguments, and so on. The arity of `func` can be specified
if `func.length` is not sufficient.

Note: This method does not set the `length` property of curried functions.

@static
@memberOf _
@category Functions
@param {Function} func The function to curry.
@param {number} [arity=func.length] The arity of `func`.
@returns {Function} Returns the new curried function.
@example

var curried = _.curry(function(a, b, c) {
  console.log(a + b + c);
});

curried(1)(2)(3);
// => 6

curried(1, 2)(3);
// => 6

curried(1, 2, 3);
// => 6