JavaScript auto-curry. Works with native code functions, regulars ones, ...rest and parameters with default values. It does not depend on function.length.