transduce

v0.9.6arrow_drop_down
v0.9.6
STATUS
Passing
DOWNLOADS
2
VISIBILITY
Public
PUBLISHED
5 years ago
SIZE
2 KB
Initializes a transducer using supplied iterator function.
1 contributor
Install transduce as a package?
Copied
npm i @bit/justin-capalbo.ramda.transduce
Set Bit as a scoped registryLearn more
npm config set '@bit:registry' https://node.bit.cloud
Component Example
React
React
Vue
Angular
React Native
Add dependency... help_outline
Just
import
any of the 1 million components
and packages in Bit or NPM to the example.
import Button from '@bit/grommet.grommet.button';
import Lodash from 'lodash';
toggle layout
No preview available
modifieddraft
chevron_left
chevron_right
transduce (
xf:Function,
fn:Function,
acc:*,
list:Array
) : *

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 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. The init function can be used to provide an initial accumulator, but is ignored by transduce.

The iteration is performed with R.reduce after initializing the transducer.

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]
Arguments
xf: Function

The transducer function. Receives a transformer and returns a transformer.

fn: Function

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

acc: *

The initial accumulator value.

list: Array

The list to iterate over.

Returns
*

The final, accumulated value.

Help and resources