Currying

JavaScript 🟡 Mid

Définition

Transformer une fonction a N arguments en N fonctions a 1 argument chainables. Chaque appel retourne une nouvelle fonction jusqu'a ce que tous les arguments soient fournis.

Analogie

Un formulaire en plusieurs étapes : chaque page collecte une info, et le formulaire n'est soumis qu'a la dernière étape.

Exemple de code

const curry = (fn) => {
  const arity = fn.length;
  return function go(...args) {
    return args.length >= arity
      ? fn(...args)
      : (...more) => go(...args, ...more);
  };
};
const add = curry((a, b, c) => a + b + c);
add(1)(2)(3); // 6

Cas d'usage

Configuration progressive de fonctions, création de variantes spécialisées, composition fonctionnelle.

#core#fonctionnel#pattern

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