À retenir
- Transforme une fonction multi-arguments en une chaîne de fonctions à argument unique.
- Permet de 'pré-remplir' certains paramètres pour créer des fonctions spécialisées.
- C'est un pilier de la programmation fonctionnelle moderne.
La curryfication est une technique qui consiste à transformer une fonction prenant plusieurs paramètres en une suite de fonctions n'en prenant qu'un seul à la fois. Imaginez une recette de cuisine où, au lieu de mettre tous les ingrédients en même temps, vous ajoutez un ingrédient, ce qui vous donne une 'préparation intermédiaire', puis vous ajoutez le suivant, et ainsi de suite jusqu'au plat final.
Étymologie
Le terme vient du nom de famille de Haskell Curry, un mathématicien et logicien américain célèbre pour ses travaux en logique combinatoire. Bien que le concept ait été initialement introduit par Moses Schönfinkel, c'est le nom de Curry qui est resté dans l'usage informatique, notamment avec l'essor des langages fonctionnels.
Exemples d'usage
- En JavaScript, transformer
f(a, b, c)enf(a)(b)(c). - En Haskell, toutes les fonctions sont nativement curryfiées : l'écriture
add 2 3est techniquement perçue comme(add 2) 3. - Créer une fonction de calcul de taxe fixe (ex: TVA à 20%) à partir d'une fonction de calcul générique prenant le taux et le prix.
Cas d'usage
Ce concept est omniprésent en programmation fonctionnelle. Il est utilisé pour faire de l'application partielle, c'est-à-dire créer des fonctions spécialisées à partir de fonctions plus générales en fixant certains paramètres à l'avance. On le retrouve souvent dans le développement Web (React, Redux) pour gérer des événements ou configurer des middlewares.
Bonnes pratiques
Il ne faut pas en abuser dans les langages qui ne sont pas purement fonctionnels (comme Python ou PHP), car cela peut rendre le code difficile à lire pour des développeurs non initiés. Utilisez la curryfication surtout lorsque vous avez besoin de réutiliser une fonction avec les mêmes premiers paramètres de façon répétée.
Synonymes
Antonymes
Conseil
Pour bien comprendre, essayez de réécrire une simple fonction d'addition (a, b) => a + b sous la forme a => b => a + b dans votre console de navigateur. Vous verrez que add(5) vous renvoie une fonction qui 'attend' le deuxième nombre pour terminer le calcul.
Questions fréquentes
Quelle est la différence entre curryfication et application partielle ?
La curryfication est le processus de décomposition de la fonction, tandis que l'application partielle est l'action de fixer certains arguments pour obtenir une nouvelle fonction simplifiée.
Est-ce que cela ralentit le programme ?
Légèrement, car cela crée plusieurs fonctions intermédiaires en mémoire, mais l'impact est négligeable par rapport aux gains en modularité et en clarté du code.