Currying

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Question book.svg
Este artigo não cita fontes confiáveis e independentes. (desde abril de 2012). Por favor, adicione referências e insira-as corretamente no texto ou no rodapé. Conteúdo sem fontes poderá ser removido.
Encontre fontes: Google (notícias, livros e acadêmico)

Em ciência da computação, currying é uma técnica de transformação de uma função que recebe múltiplos parâmetros (mais especificamente, uma n-tupla como parâmetro) de forma que ela pode ser chamada como uma cadeia de funções que recebem somente um parâmetro cada. Foi inventada por Moses Schönfinkel e Gottlob Frege, e independentemente por Haskell Curry.

Cunhado por Christopher Strachey em 1967, o nome é uma referência ao matemático Haskell Curry.

Definição[editar | editar código-fonte]

Dada uma função f do tipo  f \colon (X \times Y) \to Z , então a técnica de currying a torna  \mbox{curry}(f) \colon X \to (Y \to Z) . Isto é,  \mbox{curry}(f) toma um parâmetro do tipo  X e retorna uma função do tipo  Y \to Z . Uncurrying é a transformação inversa.

Intuitivamente, currying significa que "se você fixa alguns parâmetros, você recebe uma função com os parâmetros remanescentes". Por exemplo, se a função div é a versão em currying da operação x / y, então div com o parâmetro x fixado em 1 é equivalente à função inv, que retorna o inverso de seu parâmetro, definida por inv(y) = 1 / y.

A motivação prática da técnica é que frequentemente se utiliza funções obtidas através da aplicação de somente alguns dos parâmetros. Algumas linguagens de programação possuem suporte sintático nativo ao currying, de forma que funções com múltiplos parâmetros são expandidas para formas reduzidas; exemplos incluem ML e Haskell. Qualquer linguagem que suporte closures pode ser usada para escrever funções com essa técnica de currying.

Ver também[editar | editar código-fonte]

Ligações externas[editar | editar código-fonte]