Travis build: 1662
This commit is contained in:
33
README.md
33
README.md
@ -246,6 +246,7 @@ average(1, 2, 3);
|
||||
* [`sleep`](#sleep)
|
||||
* [`throttle`](#throttle)
|
||||
* [`times`](#times)
|
||||
* [`uncurry`](#uncurry)
|
||||
* [`unfold`](#unfold)
|
||||
|
||||
</details>
|
||||
@ -4199,6 +4200,38 @@ console.log(output); // 01234
|
||||
<br>[⬆ Back to top](#table-of-contents)
|
||||
|
||||
|
||||
### uncurry
|
||||
|
||||
Uncurries a function up to depth `n`.
|
||||
|
||||
Return a variadic function.
|
||||
Use `Array.reduce()` on the provided arguments to call each subsequent curry level of the function.
|
||||
If the `length` of the provided arguments is less than `n` throw an error.
|
||||
Otherwise, call `fn` with the proper amount of arguments, using `Array.slice(0, n)`.
|
||||
Omit the second argument, `n`, to uncurry up to depth `1`.
|
||||
|
||||
```js
|
||||
const uncurry = (fn, n = 1) => (...args) => {
|
||||
const next = acc => args => args.reduce((x, y) => x(y), acc);
|
||||
if (n > args.length) throw new RangeError('Arguments too few!');
|
||||
return next(fn)(args.slice(0, n));
|
||||
};
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>Examples</summary>
|
||||
|
||||
```js
|
||||
const add = x => y => z => x + y + z;
|
||||
const uncurriedAdd = uncurry(add, 3);
|
||||
uncurriedAdd(1, 2, 3); // 6
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
<br>[⬆ Back to top](#table-of-contents)
|
||||
|
||||
|
||||
### unfold
|
||||
|
||||
Builds an array, using an iterator function and an initial seed value.
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user