// Loaded from https://deno.land/x/ramda@v0.27.2/source/uncurryN.js import _curry2 from './internal/_curry2.js'; import curryN from './curryN.js'; /** * Returns a function of arity `n` from a (manually) curried function. * Note that, the returned function is actually a ramda style * curryied function, which can accept one or more arguments in each * function calling. * * @func * @memberOf R * @since v0.14.0 * @category Function * @sig Number -> (a -> b -> c ... -> z) -> ((a -> b -> c ...) -> z) * @param {Number} length The arity for the returned function. * @param {Function} fn The function to uncurry. * @return {Function} A new function. * @see R.curry, R.curryN * @example * * const addFour = a => b => c => d => a + b + c + d; * * const uncurriedAddFour = R.uncurryN(4, addFour); * uncurriedAddFour(1, 2, 3, 4); //=> 10 */ var uncurryN = _curry2(function uncurryN(depth, fn) { return curryN(depth, function() { var currentDepth = 1; var value = fn; var idx = 0; var endIdx; while (currentDepth <= depth && typeof value === 'function') { endIdx = currentDepth === depth ? arguments.length : idx + value.length; value = value.apply(this, Array.prototype.slice.call(arguments, idx, endIdx)); currentDepth += 1; idx = endIdx; } return value; }); }); export default uncurryN;