O que é currying?

4 de setembro de 2025 · 2 min de leitura

Read in english

Currying é uma técnica para criar funções que compartilham uma mesma lógica. Nela, subfunções aplicam argumentos fixos a uma função-mãe e herdam a declaração dos parâmetros restantes.

Exemplo em JavaScript:

// função curryficada
function soma(a) {
  return function(b) {
    return a + b;
  }
}

const somar2 = soma(2);

// usos
console.log(soma(2)(7)); // 9
console.log(somar2(7)); // 9

Essa técnica vem da programação funcional e é muito útil para cálculos e matemática.

Outro exemplo, em F#:

let volumePiramide(formulaAreaBase)(c)(l)(a) = 
  a * (formulaAreaBase(c)(l))/3.0

let areaRetangulo(c)(l) = c * l

let areaTriangulo(c)(l) = (c * l)/2.0

let areaCirculo(_)(r) = Math.PI * r**2.0

let volumePiramideBaseRetangular =
  volumePiramide(areaRetangulo)

let volumePiramideBaseTriangular =
  volumePiramide(areaTriangulo)

let volumeCone =
  volumePiramide(areaCirculo)(0)

// usos
let v1 = volumePiramideBaseRetangular(7.0)(4.0)(11.0)
let vc = volumeCone(9.0)(12.0) // raio 9, altura 12

Quanto menos um parâmetro varia entre as subfunções, mais à esquerda ele deve ficar na declaração curryficada.

A

AlexandreHTRB

Campinas/SP,
Brasil