DevPath · Aprende a programar ESPTEN

Programación funcional

Composición y currying

Composición de funciones

Componer es combinar funciones simples para formar una más compleja: la salida de una es la entrada de la siguiente.

const doble = (n) => n * 2;
const incrementar = (n) => n + 1;

const dobleYIncrementar = (n) => incrementar(doble(n));
console.log(dobleYIncrementar(5)); // 11

Una función componer genérica que aplica de derecha a izquierda:

const componer = (f, g) => (x) => f(g(x));
const resultado = componer(incrementar, doble);
console.log(resultado(5)); // 11

Currying

El currying transforma una función de varios argumentos en una secuencia de funciones de un solo argumento. Permite "fijar" parámetros y crear funciones especializadas:

const multiplicar = (a) => (b) => a * b;

const porTres = multiplicar(3); // fija a = 3
console.log(porTres(5)); // 15
console.log(multiplicar(2)(4)); // 8

Esto se apoya en los closures: la función interna "recuerda" el valor de a aunque la externa ya haya terminado. El currying y la composición son la base para construir tuberías de transformación reutilizables.

Ejemplos

Currying para crear funciones especializadas

const sumar = (a) => (b) => a + b;
const sumar10 = sumar(10);
console.log(sumar10(5));  // 15
console.log(sumar(2)(3)); // 5
Pon esto en práctica

DevPath es un curso práctico: aquí lees la teoría; en la app la pones en práctica con ejercicios que se ejecutan de verdad, sin conexión.

Empezar gratis en la app →
← Funciones de orden superior y map/filter/reduceCopia superficial vs profunda (shallow vs deep) →