As funções podem ser manipuladas em uma grande variedade
de formas em uma linguagem de programação funcional. As
funções são tratadas como valores de primeira importância, o que é o mesmo que
dizer que funções podem ser parâmetros ou valores de entrada para outras
funções e podem ser os valores de retorno ou saída de uma função. Então podemos
entender paradigma funcional como um mapeamento dos valores de entrada nos
valores de retorno, através de funções. Isso permite que funções como
mapcar
em LISP e map
em Haskell que
tomam ambos uma função e uma lista
como entrada e aplicam a função de entrada a cada elemento da lista. Funções
podem ser nomeadas, como em outras linguagens, ou definidas anonimamente
(algumas vezes durante a execução do programa) usando uma abstração lambda
e usadas como valores em outras funções. Linguagens funcionais também permitem
que funções sejam do tipo curry. Currying é
uma técnica para reescrita de funções com múltiplos parâmetros como a
composição de funções de um parâmetro. A função do tipocainda não são especificados. Esta nova função
pode ser aplicada aos parâmetros restantes para obter o valor da função final.
Por exemplo, uma função adiciona(x,y) = x + y
pode ser do tipo curry de forma que o valor de retorno adiciona(2)
— note que que não há um parâmetro y — será uma função anônima, o que é equivalente
à função adiciona2(y) = 2 + y. Esta nova função tem apenas um
parâmetro e corresponde a adicionar 2 a um número. Novamente, isso é apenas
possível porque as funções são tratadas como valores de primeira importância.
Nenhum comentário:
Postar um comentário