Currying de funciones en JavaScript

Beginner

This tutorial is from open-source community. Access the source code

Introducción

En este laboratorio, exploraremos el concepto de currying y uncurrying de funciones en JavaScript. El currying de funciones es una técnica que nos permite transformar una función que toma múltiples argumentos en una secuencia de funciones que cada una toma un solo argumento. Por otro lado, el uncurrying de funciones es el proceso de transformar una secuencia de funciones que cada una toma un solo argumento en una función que toma múltiples argumentos. A través de este laboratorio, aprenderemos cómo implementar ambas técnicas en JavaScript.

Deshacer el currying de una función

Para deshacer el currying de una función hasta una profundidad especificada, utiliza la función uncurry.

const uncurry =
  (fn, n = 1) =>
  (...args) => {
    const next = (acc) => (args) => args.reduce((x, y) => x(y), acc);
    if (n > args.length) throw new RangeError("Arguments too few!");
    return next(fn)(args.slice(0, n));
  };

Para utilizar la función uncurry, pasa la función que quieres deshacer el currying y la profundidad hasta la que la quieres deshacer como argumentos. La función devolverá una función variádica que puedes llamar con los argumentos que quieres pasar.

Si no especificas la profundidad, la función deshacera el currying hasta la profundidad 1.

const add = (x) => (y) => (z) => x + y + z;
const uncurriedAdd = uncurry(add, 3);
uncurriedAdd(1, 2, 3); // 6

Si el número de argumentos que pasas es menor que la profundidad especificada, la función lanzará un RangeError.

Resumen

¡Felicidades! Has completado el laboratorio de Deshacer el currying de una función. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.