MFR : une bibliothèque de programmation fonctionnelle JSL pour la manipulation de listes/tableaux associatifsJ'ai développé cette bibliothèque d'assistance alors que je travaillais sur un grand framework JSL. Après avoir codé la n-ième boucle For() pour parcourir une liste (et corrigé de nombreux bogues liés à l'encombrement involontaire de la variable d'index), j'ai réalisé que le code aurait l'air beaucoup plus propre (et serait plus facile à entretenir) si j'utilisais supérieur -abstractions de niveau comme celles couramment utilisées dans la programmation fonctionnelle.
La bibliothèque implémente le trio map/filter/reduce, disponible dans des langages comme Python et JavaScript, ainsi que quelques autres comme apply, reduce et compare. Il a été inspiré par http://book.pythontips.com/en/latest/map_filter.html .
Consultez les tests pour des exemples d'utilisation et faites-moi savoir si vous trouvez un bogue ou un moyen de l'améliorer !
MFR (de Map-Filter-Reduce) est une bibliothèque de primitives de programmation fonctionnelle pour JSL.
Comprend des tests de base.
Inspiré par http://book.pythontips.com/en/latest/map_filter.html
Développement d'applications analytiquesUtilitairesRe : MFR : une bibliothèque de programmation fonctionnelle JSL pour la manipulation de listes/tableaux associatifsMerci, @jcperkins12 . Heureux que vous le trouviez utile.
Re : MFR : une bibliothèque de programmation fonctionnelle JSL pour la manipulation de listes/tableaux associatifsC'est formidable à la fois pour ce qu'il fournit de manière inhérente et comme modèle d'abstraction dans JSL. Merci d'avoir posté ceci.
Re : MFR : une bibliothèque de programmation fonctionnelle pour JSLMise à jour (8/2019) : la nouvelle version (MFR2.zip) étend les fonctionnalités d'origine avec de nouvelles commandes. Cette réécriture utilise des classes au lieu d'espaces de noms pour un code plus propre (et pour prendre en charge les mixins). La manipulation d'expression est utilisée au lieu de transmettre des fonctions anonymes pour la personnalisation du comportement (que faire pour chaque élément du conteneur). Le fichier .zip comprend des tests et une application réelle qui implémente un dictionnaire composite (clé à plusieurs niveaux), utile pour implémenter des caches.
Voici une liste des méthodes disponibles :
Map : renvoie une liste de résultats de l'évaluation de l'expression après la substitution des valeurs d'entrée.
Map2dict : Renvoie un dictionnaire (Associative Array) des résultats de l'évaluation des deux expressions après substitution des valeurs d'entrée.
Réduire : renvoie le cumul des résultats de l'évaluation de l'expression après la substitution des valeurs d'entrée.
Filtre : renvoie les éléments de la liste donnée pour lesquels l'évaluation de l'expression après la substitution des valeurs d'entrée est vraie
Any : renvoie 1 si l'un des éléments de la liste donnée, lorsqu'il est utilisé dans l'évaluation de l'expression, donne une valeur vraie.
Tous : renvoie 1 si l'un des éléments de la liste donnée, lorsqu'il est utilisé dans l'évaluation de l'expression, donne une valeur vraie.
Zip : Combine deux listes de même longueur en une seule liste de paires d'éléments correspondants. Non pris en charge/défini pour les tableaux associatifs
Appliquer : applique l'expression sur les entrées pour les effets secondaires.
Plat : prend une liste imbriquée et renvoie une liste où tous les éléments sont au même niveau, en conservant l'ordre d'origine