Travis build: 1662

This commit is contained in:
30secondsofcode
2018-02-14 09:58:38 +00:00
parent 5612671121
commit c6db12bdfc
2 changed files with 42 additions and 1 deletions

View File

@ -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