Transducer

JavaScript 🔴 Senior

Définition

Transformations composables et indépendantes du type de collection. Combine map, filter, reduce en un seul passage sans créer de tableaux intermédiaires.

Analogie

Un ouvrier polyvalent sur une chaîne de montage qui fait tri + transformation + emballage en un seul passage au lieu de trois passages séparés.

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 données en un seul passage, éviter les allocations intermédiaires.

#core#fonctionnel#avance#performance

← → au clavier pour passer d'une fiche à l'autre