| import _curry1 from "./internal/_curry1.js"; |
| import curryN from "./curryN.js"; |
| /** |
| * Returns a curried equivalent of the provided function. The curried function |
| * has two unusual capabilities. First, its arguments needn't be provided one |
| * at a time. If `f` is a ternary function and `g` is `R.curry(f)`, the |
| * following are equivalent: |
| * |
| * - `g(1)(2)(3)` |
| * - `g(1)(2, 3)` |
| * - `g(1, 2)(3)` |
| * - `g(1, 2, 3)` |
| * |
| * Secondly, the special placeholder value [`R.__`](#__) may be used to specify |
| * "gaps", allowing partial application of any combination of arguments, |
| * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__), |
| * the following are equivalent: |
| * |
| * - `g(1, 2, 3)` |
| * - `g(_, 2, 3)(1)` |
| * - `g(_, _, 3)(1)(2)` |
| * - `g(_, _, 3)(1, 2)` |
| * - `g(_, 2)(1)(3)` |
| * - `g(_, 2)(1, 3)` |
| * - `g(_, 2)(_, 3)(1)` |
| * |
| * @func |
| * @memberOf R |
| * @since v0.1.0 |
| * @category Function |
| * @sig (* -> a) -> (* -> a) |
| * @param {Function} fn The function to curry. |
| * @return {Function} A new, curried function. |
| * @see R.curryN, R.partial |
| * @example |
| * |
| * const addFourNumbers = (a, b, c, d) => a + b + c + d; |
| * |
| * const curriedAddFourNumbers = R.curry(addFourNumbers); |
| * const f = curriedAddFourNumbers(1, 2); |
| * const g = f(3); |
| * g(4); //=> 10 |
| */ |
| |
| var curry = |
| /*#__PURE__*/ |
| _curry1(function curry(fn) { |
| return curryN(fn.length, fn); |
| }); |
| |
| export default curry; |