Currying de Funções em JavaScript

Beginner

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

Introdução

Neste laboratório, exploraremos o conceito de currying e uncurrying de funções em JavaScript. Currying de funções é uma técnica que nos permite transformar uma função que aceita múltiplos argumentos em uma sequência de funções que aceitam cada uma um único argumento. Por outro lado, uncurrying de funções é o processo de transformar uma sequência de funções que aceitam cada uma um único argumento em uma função que aceita múltiplos argumentos. Através deste laboratório, aprenderemos como implementar ambas as técnicas em JavaScript.

Uncurry de uma Função

Para fazer o uncurry de uma função até uma profundidade especificada, use a função 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 usar a função uncurry, passe a função que você deseja fazer o uncurry e a profundidade até a qual você deseja fazê-lo como argumentos. A função retornará uma função variádica que você pode chamar com os argumentos que deseja passar.

Se você não especificar a profundidade, a função fará o uncurry até a profundidade 1.

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

Se o número de argumentos que você passar for menor que a profundidade especificada, a função lançará um RangeError.

Resumo

Parabéns! Você concluiu o laboratório de Uncurry Function. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.