
¿QUÉ ES CURRYING EN PROGRAMACIÓN FUNCIONAL?
El Currying es una técnica fundamental en la programación funcional que transforma una función que toma múltiples argumentos en una secuencia de funciones donde cada una toma un solo argumento. En lugar de llamar a una función con todos sus parámetros a la vez, el currying permite aplicarlos de forma secuencial, obteniendo nuevas funciones con un número reducido de parámetros pendientes.
«Currying nos permite construir funciones más flexibles y reutilizables, simplificando la composición y la aplicación parcial de argumentos, un pilar de la programación funcional moderna.»
Esta técnica, nombrada en honor al matemático Haskell Curry, no solo mejora la legibilidad del código, sino que también facilita la creación de funciones especializadas a partir de funciones más generales, lo que es invaluable en entornos de desarrollo modernos como JavaScript.
VENTAJAS Y CASOS DE USO DEL CURRYING

Implementar currying aporta múltiples beneficios a tu código:
- Reutilización de Código: Permite crear funciones más genéricas que pueden ser «especializadas» mediante la aplicación parcial, evitando la duplicación de lógica.
- Composición de Funciones: Facilita la combinación de funciones pequeñas y especializadas para construir operaciones más complejas, manteniendo la claridad.
- Lectura y Mantenimiento: Al descomponer una función compleja en pasos más pequeños y manejables, el código se vuelve más fácil de entender, probar y mantener.
- Aplicación Parcial: Es la base del currying. Te permite fijar algunos argumentos de una función y obtener una nueva función que espera los argumentos restantes, ideal para configuraciones o transformaciones de datos.
Estos beneficios son especialmente notables en bibliotecas y frameworks que adoptan paradigmas funcionales, donde la fluidez y la inmutabilidad son claves para un desarrollo robusto y escalable.
CURRYING EN JAVASCRIPT: EJEMPLOS PRÁCTICOS
Veamos cómo se traduce el concepto de currying a un ejemplo práctico en JavaScript. Imaginemos una función para sumar tres números:
// Función tradicional
function sumaTradicional(a, b, c) {
return a + b + c;
}
console.log(sumaTradicional(1, 2, 3)); // Salida: 6
// Función con Currying
function sumaCurried(a) {
return function(b) {
return function(c) {
return a + b + c;
};
};
}
// Aplicación parcial y uso
const sumaConDos = sumaCurried(2);
const sumaConDosYTres = sumaConDos(3);
console.log(sumaConDosYTres(5)); // Salida: 10 (2 + 3 + 5)
console.log(sumaCurried(1)(2)(3)); // Salida: 6
En este ejemplo, `sumaCurried` es una función currificada. Cada llamada devuelve una nueva función que espera el siguiente argumento, permitiendo una aplicación flexible y modular. Esto es especialmente útil en librerías funcionales como Ramda o Lodash/fp, donde el currying es una característica central para la composición de funciones.
