Transducer

JavaScript 🔴 Senior

Definition

Transformations composables et independantes du type de collection. Combine map, filter, reduce en un seul passage sans creer de tableaux intermediaires.

Analogie

Un ouvrier polyvalent sur une chaine de montage qui fait tri + transformation + emballage en un seul passage au lieu de trois passages separes.

Exemple de code

const map = f => step => (acc, x) => step(acc, f(x));
const filter = pred => step => (acc, x) =>
  pred(x) ? step(acc, x) : acc;
const xform = [filter(x => x % 2), map(x => x * 10)];
const transduce = xform.reduceRight(
  (s, fn) => fn(s), (acc, x) => [...acc, x]
);

Cas d'usage

Traitement de grands jeux de donnees en un seul passage, eviter les allocations intermediaires.

#core#fonctionnel#avance#performance