Currying

JavaScript 🟡 Mid

Definition

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 etapes : chaque page collecte une info, et le formulaire n'est soumis qu'a la derniere etape.

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, creation de variantes specialisees, composition fonctionnelle.

#core#fonctionnel#pattern