MFR: una biblioteca de programación funcional JSL para manipulación de listas/matrices asociativasDesarrollé esta biblioteca auxiliar mientras trabajaba en un marco JSL grande. Después de codificar el enésimo bucle For() para recorrer una lista (y corregir tantos errores relacionados con la manipulación involuntaria de la variable de índice), me di cuenta de que el código se vería mucho más limpio (y sería más fácil de mantener) si usara niveles superiores. abstracciones de nivel como las que se usan comúnmente en la programación funcional.
La biblioteca implementa el trío map/filter/reduce, disponible en lenguajes como Python y JavaScript, además de algunos más como aplicar, reducir y comparar. Se inspiró en http://book.pythontips.com/en/latest/map_filter.html .
Consulte las pruebas para ver ejemplos de uso y avíseme si encuentra un error o una forma de mejorarlo.
MFR (de Map-Filter-Reduce) es una biblioteca de primitivas de programación funcional para JSL.
Incluye pruebas básicas.
Inspirado en http://book.pythontips.com/en/latest/map_filter.html
Desarrollo de aplicaciones analíticasUtilidadesRe: MFR: una biblioteca de programación funcional JSL para manipulación de listas/matrices asociativasDesde Jmp 16, la mayor parte de la funcionalidad ahora está disponible oficialmente como Filter Eeach, Transfrom Each ...
muy bien.
¿Existe también una función de aplanamiento ?
Re: MFR: una biblioteca de programación funcional JSL para manipulación de listas/matrices asociativasGracias, @jcperkins12 . Me alegra que lo encuentres útil.
Re: MFR: una biblioteca de programación funcional JSL para manipulación de listas/matrices asociativasEsto es excelente tanto por lo que proporciona inherentemente como por una plantilla para la abstracción en JSL. Gracias por publicar esto.
Re: MFR: una biblioteca de programación funcional para JSLActualización (8/2019): la nueva versión (MFR2.zip) amplía la funcionalidad original con nuevos comandos. Esta reescritura utiliza clases en lugar de espacios de nombres para un código más limpio (y para admitir mixins). Se utiliza la manipulación de expresiones en lugar de pasar funciones anónimas para la personalización del comportamiento (qué hacer con cada elemento contenedor). El archivo .zip incluye pruebas y una aplicación real que implementa un diccionario compuesto (clave multinivel), útil para implementar cachés.
Aquí hay una lista de los métodos disponibles:
Mapa: Devuelve una lista de resultados de la evaluación de la expresión después de la sustitución de los valores de entrada.
Map2dict: Devuelve un diccionario (Associative Array) de resultados de la evaluación de las dos expresiones después de la sustitución de los valores de entrada.
Reducir: Devuelve la acumulación de resultados de la evaluación de la expresión después de la sustitución de los valores de entrada.
Filtro: devuelve los elementos de la lista dada para los cuales la evaluación de la expresión después de la sustitución de los valores de entrada es verdadera
Cualquiera: devuelve 1 si alguno de los elementos de la lista dada, cuando se utiliza en la evaluación de la expresión, da como resultado un valor verdadero.
Todo: Devuelve 1 si alguno de los elementos de la lista dada, cuando se utiliza en la evaluación de la expresión, da como resultado un valor verdadero.
Zip: combina dos listas de la misma longitud en una sola lista de pares de elementos correspondientes. No compatible/definido para matrices asociativas
Aplicar: Aplica la expresión sobre las entradas para efectos secundarios.
Plano: toma una lista anidada y devuelve una lista donde todos los elementos están en el mismo nivel, manteniendo el orden original.
Re: MFR: una biblioteca de programación funcional JSL para manipulación de listas/matrices asociativasDesde Jmp 16, la mayor parte de la funcionalidad ahora está disponible oficialmente como Filtrar cada uno, Transmitir cada uno ...
muy bien.
¿Existe también una función de aplanamiento ?