| var _curry2 = |
| /*#__PURE__*/ |
| require("./internal/_curry2"); |
| |
| var curryN = |
| /*#__PURE__*/ |
| require("./curryN"); |
| /** |
| * Accepts a function `fn` and a list of transformer functions and returns a |
| * new curried function. When the new function is invoked, it calls the |
| * function `fn` with parameters consisting of the result of calling each |
| * supplied handler on successive arguments to the new function. |
| * |
| * If more arguments are passed to the returned function than transformer |
| * functions, those arguments are passed directly to `fn` as additional |
| * parameters. If you expect additional arguments that don't need to be |
| * transformed, although you can ignore them, it's best to pass an identity |
| * function so that the new function reports the correct arity. |
| * |
| * @func |
| * @memberOf R |
| * @since v0.1.0 |
| * @category Function |
| * @sig ((x1, x2, ...) -> z) -> [(a -> x1), (b -> x2), ...] -> (a -> b -> ... -> z) |
| * @param {Function} fn The function to wrap. |
| * @param {Array} transformers A list of transformer functions |
| * @return {Function} The wrapped function. |
| * @see R.converge |
| * @example |
| * |
| * R.useWith(Math.pow, [R.identity, R.identity])(3, 4); //=> 81 |
| * R.useWith(Math.pow, [R.identity, R.identity])(3)(4); //=> 81 |
| * R.useWith(Math.pow, [R.dec, R.inc])(3, 4); //=> 32 |
| * R.useWith(Math.pow, [R.dec, R.inc])(3)(4); //=> 32 |
| * @symb R.useWith(f, [g, h])(a, b) = f(g(a), h(b)) |
| */ |
| |
| |
| var useWith = |
| /*#__PURE__*/ |
| _curry2(function useWith(fn, transformers) { |
| return curryN(transformers.length, function () { |
| var args = []; |
| var idx = 0; |
| |
| while (idx < transformers.length) { |
| args.push(transformers[idx].call(this, arguments[idx])); |
| idx += 1; |
| } |
| |
| return fn.apply(this, args.concat(Array.prototype.slice.call(arguments, transformers.length))); |
| }); |
| }); |
| |
| module.exports = useWith; |