MFR: una libreria di programmazione funzionale JSL per la manipolazione di elenchi/array associativiHo sviluppato questa libreria di supporto mentre stavo lavorando su un framework JSL di grandi dimensioni. Dopo aver codificato l'n-esimo ciclo For() per attraversare un elenco (e aver corretto molti bug relativi al clobbering non intenzionale della variabile index) mi sono reso conto che il codice sarebbe sembrato molto più pulito (e più facile da mantenere) se avessi usato un valore più alto astrazioni a livello come quelle comunemente usate nella programmazione funzionale.
La libreria implementa il trio map/filter/reduce, disponibile in linguaggi come Python e JavaScript, oltre ad altri come applica, riduci e confronta. È stato ispirato da http://book.pythontips.com/en/latest/map_filter.html .
Controlla i test per esempi di utilizzo e fammi sapere se trovi un bug o un modo per migliorarlo!
MFR (da Map-Filter-Reduce) è una libreria di primitive di programmazione funzionale per JSL.
Include test di base.
Ispirato da http://book.pythontips.com/en/latest/map_filter.html
Sviluppo di applicazioni analiticheUtilitàRe: MFR: una libreria di programmazione funzionale JSL per la manipolazione di elenchi/array associativiGrazie, @jcperkins12 . Sono contento che lo trovi utile.
Re: MFR: una libreria di programmazione funzionale JSL per la manipolazione di elenchi/array associativiQuesto è ottimo sia per ciò che fornisce intrinsecamente, sia per un modello per l'astrazione in JSL. grazie per aver postato questo.
Re: MFR: una libreria di programmazione funzionale per JSLAggiornamento (8/2019): la nuova versione (MFR2.zip) amplia le funzionalità originali con nuovi comandi. Questa riscrittura utilizza classi invece di spazi dei nomi per un codice più pulito (e per supportare i mixin). La manipolazione delle espressioni viene utilizzata invece di passare funzioni anonime per la personalizzazione del comportamento (cosa fare per ogni elemento del contenitore). Il file .zip include dei test e una vera e propria applicazione che implementa un dizionario composito (chiave multilivello), utile per implementare le cache.
Ecco un elenco dei metodi disponibili:
Mappa: Restituisce un elenco dei risultati della valutazione dell'espressione dopo la sostituzione dei valori di input.
Map2dict: Restituisce un dizionario (Associative Array) dei risultati della valutazione delle due espressioni dopo la sostituzione dei valori di input.
Riduci: Restituisce l'accumulo dei risultati della valutazione dell'espressione dopo la sostituzione dei valori di input.
Filtro: restituisce gli elementi nell'elenco fornito per i quali la valutazione dell'espressione dopo la sostituzione dei valori di input è vera
Qualsiasi: restituisce 1 se uno qualsiasi degli elementi nell'elenco specificato quando utilizzato nella valutazione dell'espressione restituisce un valore vero.
Tutto: restituisce 1 se uno qualsiasi degli elementi nell'elenco specificato quando utilizzato nella valutazione dell'espressione restituisce un valore vero.
Zip: unisce due elenchi della stessa lunghezza in un unico elenco di coppie di elementi corrispondenti. Non supportato/definito per gli array associativi
Applica: applica l'espressione sugli input per gli effetti collaterali.
Piatto: prende un elenco nidificato e restituisce un elenco in cui tutti gli elementi sono allo stesso livello, mantenendo l'ordine originale