Currying e aplicação parcial lidam com parâmetros de funções e podem aplicar parcialmente seus argumentos. Por isso, é comum uma certa confusão sobre esses conceitos. Assinale a alternativa correta acerca da diferença entre currying e aplicação parcial.
Questão
Currying e aplicação parcial lidam com parâmetros de funções e podem aplicar parcialmente seus argumentos. Por isso, é comum uma certa confusão sobre esses conceitos. Assinale a alternativa correta acerca da diferença entre currying e aplicação parcial.
Alternativas
a) Um currying, diferentemente da aplicação parcial, não vai continuar retornando funções unárias.
b) É possível aplicar currying sobre uma função que não tenha um valor fixo de argumentos.
c) Na aplicação parcial, não é possível realizar a chamada de um método sem informar todos os parâmetros.
d) Aplicação parcial é só uma forma de lidar com assincronismo em programação funcional de forma sequencial.
e) As aplicações parciais não se importam com o número de argumentos.
Explicação
Currying é a transformação de uma função que recebe vários argumentos (por exemplo, ) em uma sequência de funções unárias (uma por vez), do tipo . Já aplicação parcial é quando você pega uma função (curried ou não) e fixa alguns argumentos, produzindo uma nova função que espera o restante.
Analisando as alternativas:
-
a) Incorreta. Currying justamente retorna uma cadeia de funções unárias (uma por argumento). Isso é uma característica central do currying.
-
b) Correta. O currying pode ser entendido como uma técnica que permite ir “consumindo” argumentos um a um, sem depender, necessariamente, de uma aridade (quantidade de parâmetros) fixa no sentido tradicional. Em vários contextos (ex.: funções variádicas com coleta de argumentos), ainda é possível estruturar um processo “curried” que vai recebendo argumentos incrementalmente e retornando funções até que uma condição de parada seja atingida.
-
c) Incorreta. Na aplicação parcial, é possível chamar uma função sem informar todos os parâmetros, pois parte deles é pré-fixada, e o resultado é outra função aguardando os restantes.
-
d) Incorreta. Aplicação parcial não é “só” uma forma de lidar com assincronismo; é um conceito geral de manipulação de argumentos.
-
e) Incorreta. Aplicação parcial se importa com o número de argumentos porque ela fixa alguns e deixa outros pendentes; isso pressupõe alguma noção de quantos/ quais argumentos ainda faltam (mesmo que a linguagem suporte variádicos, o mecanismo de parcial ainda é sobre “fixar um subconjunto”).
Alternativa correta: (b).