Currying
JavaScript 🟡 MidDefinition
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.