1. Primeros pasos
2. Combina las funciones
3. Uso parcial (curry)
4. Programación declarativa
5. Notación por excelencia
6. Inmutabilidad y objetos.
7. Inmutabilidad y matrices
8. lentes
9. Conclusión
Esta publicación completa una serie de artículos sobre programación funcional llamada Ramda Style Thinking.
En las últimas ocho publicaciones, hablamos sobre la biblioteca Ramda JavaScript, que proporciona funciones para trabajar con JavaScript en un estilo funcional, declarativo e inmutable.
A lo largo de esta serie de artículos, aprendimos que Ramda tiene algunos principios básicos que su API sigue:
- Los datos son los últimos: casi todas las funciones aceptan un parámetro con los datos como último argumento.
- Curry: Casi todas las funciones en Ramda tienen curry. Es decir, puede llamar a una función con solo una parte de los argumentos requeridos y obtener una nueva función que esperará los argumentos restantes. Tan pronto como se proporcionen todos los argumentos, se llamará a la función original.
Estos dos principios nos permiten escribir código funcional muy limpio que integra los bloques de construcción básicos en operaciones más potentes.
Resumen
Como referencia, aquí hay un breve resumen de una serie de artículos.
- Los primeros pasos nos son presentados por la idea de funciones, funciones puras e inmutabilidad. Luego nos presenta las funciones de iteración de la colección, como
map
, filter
y reduce
. - La combinación de funciones nos muestra cómo podemos combinar nuestras funciones de varias maneras, utilizando herramientas como
both
, pipe
y compose
. - El uso parcial (currículum) nos ayuda a comprender cuándo y cómo puede ser útil proporcionar algunos argumentos a una función y poder proporcionar el resto más adelante. Usamos
partial
y curry
para ayudarnos con esto y aprender sobre flip
y marcador de posición ( __
) - La programación declarativa nos enseña la diferencia entre la programación imperativa y declarativa. Aprenderemos cómo usar sustitutos declarativos de Ramda para aritmética, comparaciones, lógica y condiciones.
- La notación despistada introduce la idea de un estilo despistado, también conocido como "programación silenciosa". En un estilo sin sentido, no vemos argumentos con los datos con los que estamos trabajando, esto se hace implícitamente. Nuestros programas están formados por pequeños bloques simples que se unen para hacer lo que necesitamos. Solo al final aplicamos nuestras funciones compuestas a datos relevantes.
- La inmutabilidad y los objetos nos devuelve a la idea de trabajar en un estilo declarativo, este es el momento de obtener las herramientas que necesitamos para leer, actualizar, modificar, eliminar y transformar las propiedades de los objetos.
- La inmutabilidad y las matrices continúa el tema y nos muestra cómo hacer operaciones similares con las matrices.
- Las lentes completan la serie junto con la introducción del concepto de lentes, un diseño que nos permite enfocarnos en pequeñas partes de grandes estructuras de datos. Usando las funciones de
view
, set
y over
, podemos leer, actualizar y transformar el valor en el que se enfoca la lente en el contexto de grandes estructuras de datos.
Que sigue
No hemos cubierto todas las complejidades de Ramda en esta serie de artículos. En particular, no hablamos sobre las funciones de cadena y no hablamos sobre conceptos más complejos, como los transductores .
Para obtener más información sobre lo que Ramda puede hacer, le recomiendo que estudie su documentación . Hay una gran cantidad de información. Todas las funciones están agrupadas por el tipo de datos con el que trabajan, aunque existe cierta superposición. Por ejemplo, algunas de las funciones para trabajar con matrices también funcionan con cadenas, y map
funciona tanto con matrices como con objetos.
Si está interesado en temas funcionales más complejos, aquí hay algunos lugares a los que puede ir:
- Transductores: aquí puede leer un buen artículo introductorio sobre cómo analizar registros utilizando transductores.
- Tipos de datos algebraicos: si ha leído lo suficiente sobre programación funcional, ha oído hablar sobre los tipos algebraicos y términos como "Functor", "Aplicador" y "Mónada". Si está interesado en explorar estas ideas en el contexto de Ramda, consulte el proyecto ramda-fantasy , que implementa algunos tipos de datos que cumplen con la especificación Fantasy Land (o la especificación Algebraic JavaScript)
Del autor de las traducciones de artículos: si le agrada al Señor, continuaré traduciendo artículos sobre Ramda, en particular, quiero traducir un artículo sobre el uso de ramda con redux , un artículo sobre componentes funcionales con funciones sin estado React y Ramda , un artículo sobre reductores y selectores modulares , y probablemente un artículo sobre la globalización de los selectores redux .