MFR: una libreria di programmazione funzionale JSL per la manipolazione di array di liste/associativeHo sviluppato questa libreria di supporto mentre stavo lavorando su un grande framework JSL. Dopo aver codificato l'n-esimo ciclo For () per attraversare un elenco (e aver corretto molti bug relativi al blocco involontario della variabile index) mi sono reso conto che il codice sarebbe apparso molto più pulito (e sarebbe stato più facile da mantenere) se avessi usato 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, più alcuni altri come apply, reduce e compare. È stato ispirato da http://book.pythontips.com/en/latest/map_filter.html .
Controlla i test per gli 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 array di liste/associativeGrazie, @jcperkins12 . Sono contento che lo trovi utile.
Re: MFR: una libreria di programmazione funzionale JSL per la manipolazione di array di liste/associativeQuesto è ottimo sia per ciò che fornisce intrinsecamente sia come modello per l'astrazione in JSL. grazie per aver postato questo.
Ri: MFR: una libreria di programmazione funzionale per JSLAggiornamento (8/2019): la nuova versione (MFR2.zip) espande le funzionalità originali con nuovi comandi. Questa riscrittura utilizza le classi invece degli 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 contenitore). Il file .zip include 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 di 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 dato 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: combina 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.
Flat: prende un elenco nidificato e restituisce un elenco in cui tutti gli elementi si trovano nello stesso livello, mantenendo l'ordine originale
Ri: MFR: una libreria di programmazione funzionale JSL per la manipolazione di elenchi/array associativiA partire da Jmp 16 la maggior parte delle funzionalità sono ora disponibili ufficialmente come Filter Each, Transfrom Each ...
Molto bene.
Esiste anche una funzione di appiattimento ?