Currying ou Partial Application

Vinicius Azevedo
Jul 20, 2017 · 3 min read

[ não é a mesma coisa? ]

O que é Currying?

É basicamente o processo de transformar uma função com vários argumentos na mesma função com menos argumentos. Ou seja, você pode passar todos os argumentos que uma função está esperando e obter o resultado, ou passar um subconjunto desses argumentos e recuperar uma função que aguarda o resto dos argumentos. Simples!

Podemos transformar a função e aplicar o currying da seguinte forma:

Não entendeu? Não se preocupe! Provavelmente você não deve estar familiarizado com conceitos os de clousures, call & apply e higher-order functions. Nesse caso, eu indico ler um pouco mais sobre o assunto antes de continuar.

Entendeu agora? Ótimo! Vamos continuar…

É importante? Por que?

Você deve estar se perguntando agora como essa técnica pode ser útil. Bom, nada melhor que exemplos do ‘mundo real’ para provar a sua importância.

Event Handling

pode ser reutilizado para vários campos

Renderização de HTML

pode ser reutilizada para renderizar tags HTML semelhantes

Higher Order Function

Tudo bem, mas Aplicação Parcial. O que é?

Significa assumir uma função e aplicá-la inicialmente a um ou mais dos seus argumentos, mas não a todos, criando uma nova função no processo. E isso já foi falando durante currying, né?

Em outras palavras, uma função que leva uma função com múltiplos parâmetros e retorna uma função com menos parâmetros.

Se você está no mesmo barco, não se preocupe. Vamos lá!

De forma sucinta:

  • currying: você pode passar todos os argumentos que uma função está esperando para obter o resultado.
  • partial application: quando, no processo de currying, você usa algumas, mas não todas as resultantes. Ou seja, como o próprio nome diz, parcialmente.

Não entendeu? Tudo bem, vamos continuar…

Vamos assumir que temos uma função add que leva 2 números como entrada e retorna um número como saída.

add( 7, 5 ) // 12. Nesse caso:

Currying

Partial Application

Em outras palavras, currying e partial application são diferentes.

Currying leva exatamente 1 entrada, enquanto a partial application leva 2 (ou mais) entradas.

Mesmo que ambos retornem uma função como saída, as funções retornadas são de formas totalmente diferentes como demonstrado acima.

Para mais detalhes eu recomendo o vídeo a seguir:

)
Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade