El curry puede darle sabor a JavaScript

El curry aparte de una mezcla de especias que le da a las comidas un toque delicioso, es un método de programación funcional en el que se combinan funciones.

Me hace gracia el nombre y curiosamente es en honor a Haskell Curry, matemático cuyos trabajos se basaron en esta lógica combinatoria y que sembró las bases de la programación funcional. De ahí que existan en programación tanto haskell como curry o currificación y que ambos estén basados en programación funcional.

Pero qué hace exactamente la currificación…

Dicho así parece un trabalenguas, así que vamos a ver un ejemplo:

Tenemos una función que muestra por consola un saludo y un nombre que vienen determinados por los parámetros

Ahora vamos a definir una función currificada:

Y dirás: “¿pa qué?”…

En nuestro ejemplo:

Como la función currificada devuelve una función, hay que asignarla a una variable, que se va a convertir en esa función retornada. Aquí estaríamos usando uno de los parámetros que necesita nuestra función de saludar.

Por último ejecutamos la función introduciendo el segundo de los parámetros necesarios, el nombre

Versión simplificada:

Voy a incluir el ejemplo que nos puso Daniel Ramos en el que se usaba esto mismo pero con promesas, y que nos permite ver claramente el potencial que tiene esta forma de programar.

Aquí es importante llamar la atención sobre un aspecto a tener en cuenta en la currificación y es que el orden de los factores (o argumentos en este caso) altera el producto (o resultado en este caso). Es decir, que tal y como orquestemos el proceso de currificación, éste tendrá más facilidad para acceder a los datos necesarios o lo contrario.

En este sentido, se recomienda que los primeros argumentos (o parámetros) sean aquello que se quiere sacar (en nuestro ejemplo, el saludo) y que se deje para el final aquel argumento que tiene los datos en los cuales se va a operar, por si éstos faltaran. Como se puede ver en el ejemplo, éstos datos últimos vendrían de una petición y usamos la promesa para aplicar nuestra función currificadora y así asegurarnos de que se ejecute cuando tenga el último parámetro disponible.

If something does not work, ACT. Yes, you! ;) That is why I am now #FrontEnd developer in @kairos_ds constantly absorbing knowledge. Proud #Adalaber.

If something does not work, ACT. Yes, you! ;) That is why I am now #FrontEnd developer in @kairos_ds constantly absorbing knowledge. Proud #Adalaber.