function curryN (fn, executeArity) {
        var curriedArgs = restArgs(arguments, 2);
        return function () {
            var args = argsToArray(arguments),
                concatedArgs = replacePlaceHolders(curriedArgs, args),
                placeHolders = concatedArgs.filter(isPlaceholder),
                canBeCalled = (concatedArgs.length - placeHolders.length >= executeArity) || !executeArity;
            return !canBeCalled ? curryN.apply(null, [fn, executeArity].concat(concatedArgs)) :
                fn.apply(null, concatedArgs);
        };
    }
function curryN (fn, executeArity) {
        var curriedArgs = restArgs(arguments, 2);
        return function () {
            var args = argsToArray(arguments),
                concatedArgs = replacePlaceHolders(curriedArgs, args),
                placeHolders = concatedArgs.filter(isPlaceholder),
                canBeCalled = (concatedArgs.length - placeHolders.length >= executeArity) || !executeArity;
            return !canBeCalled ? curryN.apply(null, [fn, executeArity].concat(concatedArgs)) :
                fn.apply(null, concatedArgs);
        };
    }
function curryN ( fn , executeArity ) { var curriedArgs = restArgs ( arguments , 2 ) ; return function ( ) { var args = argsToArray ( arguments ) , concatedArgs = replacePlaceHolders ( curriedArgs , args ) , placeHolders = concatedArgs . filter ( isPlaceholder ) , canBeCalled = ( concatedArgs . length - placeHolders . length >= executeArity ) || ! executeArity ; return ! canBeCalled ? curryN . apply ( null , [ fn , executeArity ] . concat ( concatedArgs ) ) : fn . apply ( null , concatedArgs ) ; } ; }
Curries a function and only executes the function when the arity reaches the .
@function module:sjl.curryN
@param fn - Function to curry.
@param executeArity - Arity at which to execute curried function.
@throws {TypeError} - If `fn` is not a function.
Curries a function and only executes the function when the arity reaches the .