Por Aitor Santana
Imagina que estás construyendo una aplicación, y te encuentras con un problema recurrente: el manejo de datos complejos y las operaciones que deseas realizar sobre ellos. La programación funcional es un paradigma que puede ayudarte a abordar este desafío, de manera elegante y eficiente.
Hasta hace muy poco, la programación funcional me parecía un territorio misterioso y complicado debido a su fuerte conexión con las matemáticas. Sin embargo, asistí a una charla de Henar Hernández en autentifront donde explicaba algunos conceptos de programación funcional de manera sencilla. En este artículo, compartiré lo que aprendí.
En la programación funcional existen una serie de fundamentos o características importantes que se deben cumplir:
En la programación funcional, se enfatiza la programación declarativa sobre la programación imperativa. Esto significa que declaras lo que tu aplicación debe hacer, en lugar de cómo debe hacerlo, encapsulando la lógica en funciones. Veamos un ejemplo:
|
|
En la programación funcional, se utilizan funciones puras, que son funciones que sólo dependen de sus argumentos y no tienen efectos secundarios en otras partes de la aplicación. Comparémoslas:
|
|
Son funciones que reciben otras funciones como parámetros.
|
|
En la programación funcional, las funciones son deterministas, lo que significa que, dado un conjunto de argumentos, siempre producirán el mismo resultado:
|
|
La inmutabilidad es un principio fundamental en este paradigma. Significa que los datos no cambian su estado, son constantes. Esto aporta seguridad y control al código.
|
|
Cumplir con estos fundamentos nos permite descomponer tareas complejas, hacer que el código y nuestras funciones sean más reutilizables, legibles y, sobre todo, más testeables.
La programación funcional se basa en la teoría de categorías, y una categoría según Wikipedia es:
En teoría de categorías, una categoría es una estructura algebraica que consta de una colección de objetos, conectados unos con otros mediante flechas tales que se cumplen las siguientes propiedades básicas: las flechas se pueden componer unas con otras de manera asociativa, y para cada objeto existe una flecha que se comporta como un elemento neutro bajo la composición. Fuente: Categoría(matemáticas)
Desglosemos algunos de los conceptos de está definición para entender realmente que significa:
Fantasyland es un repositorio en el que se encuentra la especificación algebraica de JavaScript, especifica la interoperabilidad de estructuras algebraicas comunes.
En dicha especificación encontraremos información en detalle sobre este tipo de estructuras.
Un funtor es un tipo de dato algebraico que actúa como una “caja mágica”, capaz de realizar transformaciones en objetos. En programación, esto se traduce en tener un método “map”, que permite aplicar una operación a cada elemento de una estructura de datos, como una lista, de una manera predecible y coherente. En matemáticas, los funtores son utilizados para relacionar objetos de diferentes categorías de una manera especial. Un ejemplo de funtor pueden ser los arrays de JavaScript. Veamos una implementación de un funtor básico en este lenguaje:
|
|
Es un tipo de funtor que nos sirve para controlar nulos o undefined. Si el valor no es nulo o undefined aplicamos la función de mapeo, en caso contrario, no tenemos por qué aplicarla.
|
|
Es importante mencionar que Maybe es un ejemplo de mónada, un subtipo de funtor. Es por ello que requiere el método flatMap/bind, para cumplir la propiedad de la unión, pero profundizar en este concepto va más allá del alcance de este artículo.
En este artículo, hemos explorado los fundamentos de la programación funcional, desde la programación declarativa hasta los funtores y el tipo Maybe.
La programación funcional ofrece una forma elegante y eficiente de abordar desafíos de desarrollo de software. Con una base sólida en estos conceptos, puedes escribir código más legible y robusto. ¡Anímate a explorar más la programación funcional y aplicar estos principios en tu trabajo!
¿Quieres más? te invitamos a suscribirte a nuestro boletín para avisarte cada vez que recopilemos contenido de calidad que compartir.
Si disfrutas leyendo nuestro blog, ¿imaginas lo divertido que sería trabajar con nosotros? ¿te gustaría?
Pero espera 🖐 que tenemos un conflicto interno. A nosotros las newsletter nos parecen 💩👎👹 Por eso hemos creado la LEAN LISTA, la primera lista zen, disfrutona y que suena a rock y reggaeton del sector de la programación. Todos hemos recibido newsletters por encima de nuestras posibilidades 😅 por eso este es el compromiso de la Lean Lista