A aplicação da técnica de currying tem algumas vantagens, além de sua aplicação básica, que é permitir que uma função receba um único argumento e retorne outra função que recebe o próximo até ter todos os argumentos necessários. Assinale a alternativa correta acerca de outro exemplo de vantagem da utilização de currying.
Questão
A aplicação da técnica de currying tem algumas vantagens, além de sua aplicação básica, que é permitir que uma função receba um único argumento e retorne outra função que recebe o próximo até ter todos os argumentos necessários. Assinale a alternativa correta acerca de outro exemplo de vantagem da utilização de currying.
Alternativas
a) Permitir aos desenvolvedores um maior nível de controle sobre as funções.
b) Possibilitar funções com um maior nível de desempenho na execução.
c) Possibilitar funções n-árias a partir de uma função sem encadeamento.
d) Praticar a programação funcional, pois toda linguagem de programação funcional usa.
e) Possibilitar sistemas de redes distribuídas por criar funções assíncronas.
Explicação
Currying transforma uma função que recebe vários argumentos em uma sequência de funções que recebem um argumento por vez. Uma vantagem prática adicional disso é permitir a criação de funções parcialmente aplicadas (partial application): você fixa alguns parâmetros (configuração) e obtém uma nova função especializada, o que dá maior controle e reutilização do comportamento.
Analisando as alternativas:
- a) Correta. O “maior nível de controle” se relaciona justamente à possibilidade de fixar argumentos e gerar funções mais específicas, compondo comportamentos com mais flexibilidade.
- b) Incorreta. Currying não implica, por si só, maior desempenho; pode até introduzir overhead por criar mais funções.
- c) Incorreta. Currying faz o oposto da ideia de “sem encadeamento”: ele cria uma cadeia de funções unárias.
- d) Incorreta. Nem toda linguagem funcional “usa” currying obrigatoriamente, e currying também pode existir fora de linguagens funcionais.
- e) Incorreta. Currying não tem relação direta com redes distribuídas ou tornar funções assíncronas.
Alternativa correta: (a).