| var _reduce = |
| /*#__PURE__*/ |
| require("./internal/_reduce"); |
| |
| var _xwrap = |
| /*#__PURE__*/ |
| require("./internal/_xwrap"); |
| |
| var curryN = |
| /*#__PURE__*/ |
| require("./curryN"); |
| /** |
| * Initializes a transducer using supplied iterator function. Returns a single |
| * item by iterating through the list, successively calling the transformed |
| * iterator function and passing it an accumulator value and the current value |
| * from the array, and then passing the result to the next call. |
| * |
| * The iterator function receives two values: *(acc, value)*. It will be |
| * wrapped as a transformer to initialize the transducer. A transformer can be |
| * passed directly in place of an iterator function. In both cases, iteration |
| * may be stopped early with the [`R.reduced`](#reduced) function. |
| * |
| * A transducer is a function that accepts a transformer and returns a |
| * transformer and can be composed directly. |
| * |
| * A transformer is an an object that provides a 2-arity reducing iterator |
| * function, step, 0-arity initial value function, init, and 1-arity result |
| * extraction function, result. The step function is used as the iterator |
| * function in reduce. The result function is used to convert the final |
| * accumulator into the return type and in most cases is |
| * [`R.identity`](#identity). The init function can be used to provide an |
| * initial accumulator, but is ignored by transduce. |
| * |
| * The iteration is performed with [`R.reduce`](#reduce) after initializing the transducer. |
| * |
| * @func |
| * @memberOf R |
| * @since v0.12.0 |
| * @category List |
| * @sig (c -> c) -> ((a, b) -> a) -> a -> [b] -> a |
| * @param {Function} xf The transducer function. Receives a transformer and returns a transformer. |
| * @param {Function} fn The iterator function. Receives two values, the accumulator and the |
| * current element from the array. Wrapped as transformer, if necessary, and used to |
| * initialize the transducer |
| * @param {*} acc The initial accumulator value. |
| * @param {Array} list The list to iterate over. |
| * @return {*} The final, accumulated value. |
| * @see R.reduce, R.reduced, R.into |
| * @example |
| * |
| * const numbers = [1, 2, 3, 4]; |
| * const transducer = R.compose(R.map(R.add(1)), R.take(2)); |
| * R.transduce(transducer, R.flip(R.append), [], numbers); //=> [2, 3] |
| * |
| * const isOdd = (x) => x % 2 === 1; |
| * const firstOddTransducer = R.compose(R.filter(isOdd), R.take(1)); |
| * R.transduce(firstOddTransducer, R.flip(R.append), [], R.range(0, 100)); //=> [1] |
| */ |
| |
| |
| var transduce = |
| /*#__PURE__*/ |
| curryN(4, function transduce(xf, fn, acc, list) { |
| return _reduce(xf(typeof fn === 'function' ? _xwrap(fn) : fn), acc, list); |
| }); |
| module.exports = transduce; |