bibliothèque JS qui permet (notamment) de manipuler les collections
lazy depuis la v3
Exemple
var t = [0, 1, 2, 3, 4];
function plusUn(nb) {
console.log(nb + ' + 1');
if (nb > 2) console.log('Traitement long');
return nb + 1;
}
function petit(nb) {
console.log(nb + ' plus petit que 3 ?');
return nb < 3;
}
Sans Lo-Dash
var js = t
.map(plusUn)
.filter(petit)
.slice(0, 2);
0 + 1
1 + 1
2 + 1
3 + 1
Traitement long
4 + 1
Traitement long
1 plus petit que 3 ?
2 plus petit que 3 ?
3 plus petit que 3 ?
4 plus petit que 3 ?
5 plus petit que 3 ?
[ 1, 2 ]
Sans Lo-Dash
Avec Lo-Dash
var _ = require('lodash');
var lodash = _(t)
.map(plusUn)
.filter(petit)
.take(2)
.value();
0 + 1
1 plus petit que 3 ?
1 + 1
2 plus petit que 3 ?
[ 1, 2 ]
Avec Lo-Dash
Conclusion
Still not that kind of lazy
Conclusion
séparation
du Calcul, de la génération → où le calcul d'une valeur est-il défini ?
du Contrôle, de la condition d'arrêt → où le calcul d'une valeur se produit-il ?
colle qui permet d'assembler efficacement des (bouts de) programmes : facilite l'approche diviser pour régner
Avantages : peut augmenter la maintenabilité et les performances
Inconvénients : peut introduire de l'overhead (dépend pas mal de la techno)
Ressources
Why Functional Programming Matters : pourquoi les fonctions d'ordre supérieur et l'évaluation paresseuse sont parmi les meilleurs outils pour écrire des programmes modulaires