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 nième boucle For() pour parcourir une liste (et corrigé autant de bugs liés à l'écrasement involontaire de la variable d'index), j'ai réalisé que le code aurait l'air beaucoup plus propre (et serait plus facile à maintenir) si j'utilisais plus 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 appliquer, réduire et comparer. 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 bug 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 cela vous soit utile.
Re : MFR : une bibliothèque de programmation fonctionnelle JSL pour la manipulation de listes/tableaux associatifsC'est génial à la fois pour ce qu'il fournit intrinsèquement et comme modèle d'abstraction en 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 la fonctionnalité 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'expressions 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é multi-niveaux), utile pour implémenter des caches.
Voici une liste des méthodes disponibles :
Carte : renvoie une liste des 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 l'accumulation 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
Re : MFR : une bibliothèque de programmation fonctionnelle JSL pour la manipulation de listes/tableaux associatifsDepuis Jmp 16, la plupart des fonctionnalités sont désormais disponibles officiellement sous les noms Filter Each, Transfrom Each ...
très bien.
Existe-t-il également une fonction d'aplatissement ?