import _curry2 from './internal/_curry2.js'; import _arrayReduce from './internal/_arrayReduce.js'; import ap from './ap.js'; import curryN from './curryN.js'; import map from './map.js'; /** * "lifts" a function to be the specified arity, so that it may "map over" that * many lists, Functions or other objects that satisfy the [FantasyLand Apply spec](https://github.com/fantasyland/fantasy-land#apply). * * @func * @memberOf R * @since v0.7.0 * @category Function * @sig Number -> (*... -> *) -> ([*]... -> [*]) * @param {Function} fn The function to lift into higher context * @return {Function} The lifted function. * @see R.lift, R.ap * @example * * const madd3 = R.liftN(3, (...args) => R.sum(args)); * madd3([1,2,3], [1,2,3], [1]); //=> [3, 4, 5, 4, 5, 6, 5, 6, 7] */ var liftN = _curry2(function liftN(arity, fn) { var lifted = curryN(arity, fn); return curryN(arity, function() { return _arrayReduce(ap, map(lifted, arguments[0]), Array.prototype.slice.call(arguments, 1)); }); }); export default liftN;