Ramda : une bibliothèque pour faire de la programmation fonctionnelle avec JavaScript
Disponible en open source, elle inclut la curryfication automatique
Les langages fonctionnels auraient-ils le vent en poupe ? C’est peut être le cas et certains développeurs repensent leurs applications à l’image d’IMVU qui a réécrit une partie du back-end de son application en langage Haskell, d’autres encore penchent pour le développement de bibliothèques dédiées à la programmation fonctionnelle en se basant sur des langages usuels très connus.
C’est le cas par exemple de Michael Hurley et Scott Sauyet qui ont développé Ramda, une bibliothèque dédiée à la programmation fonctionnelle écrite en JavaScript, au même titre qu’Underscore et Lodash.
Toutefois, contrairement aux deux bibliothèques citées précédemment qui gardent un semblant de langage non fonctionnel, la bibliothèque Ramda modèle le langage JavaScript à sa manière avec un résultat proche des langages fonctionnels, sans oublier qu’elle se base sur deux caractéristiques qu’elle ne partage pas avec ses concurrentes :
- Les fonctions en premier, les données en dernier : le développeur construit en premier ses fonctions puis introduit les données. Cette drôle de manière de procéder peut être vue comme un arbre où les fonctions (qui peuvent être vues comme des opérateurs) sont les nœuds et les données (qui peuvent être vues comme les opérandes) sont les feuilles.
- La curryfication automatique : principe cher à la programmation fonctionnelle, il permet de traduire une fonction à plusieurs arguments en une fonction à un argument qui retourne une fonction prenant le reste des arguments. Alors que pour les autres bibliothèques, la curryfication doit se faire de manière manuelle, Ramda le fait automatiquement pour toutes les fonctions prenant plus de deux paramètres en entrée.
Enfin, il est important de noter que Ramda est open source et peut être utilisée avec Node.js ou par un navigateur. Elle représente une bonne alternative aux personnes souhaitant programmer avec les paradigmes de la programmation fonctionnelle tout en tirant avantage de la puissance et des fonctionnalités de JavaScript. Le seul reproche de Ramda est sa documentation qui manque de lisibilité.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 // fonction non curryfié var value=R.prop('myProperty',obj); // equivalent de la curryfication automatique de la fonction précédente var getprop=R.prop('myProperty'); var value=getprop(obj);
Consulter le code source du projet
Et vous ?
Qu’en pensez-vous ?
Partager