|
|
- import _curry2 from "./internal/_curry2.js";
- import curryN from "./curryN.js";
- /**
- * Returns a function of arity `n` from a (manually) curried function.
- *
- * @func
- * @memberOf R
- * @since v0.14.0
- * @category Function
- * @sig Number -> (a -> b) -> (a -> c)
- * @param {Number} length The arity for the returned function.
- * @param {Function} fn The function to uncurry.
- * @return {Function} A new function.
- * @see R.curry
- * @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 =
- /*#__PURE__*/
- _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;
|