Currying

Tango.Functional.Currying

Esta classe estática contém diversas sobrecargas para a operação de Currying, onde cada sobrecarga espera em funções com diferentes quantidades de parâmetros, contendo ou não um retorno.

Métodos

Nome Parâmetros Retorno Descrição
Curry Func<T, T2, TResult> function Func<T, Func<T2, TResult>> Cria uma nova função curriada a partir da função informada no parâmetro.
Curry Func<T, T2, T3, TResult> function Func<T, Func<T2, Func<T3,TResult>>> Cria uma nova função curriada a partir da função informada no parâmetro.
Curry Func<T, T2, T3, T4, TResult> function Func<T, Func<T2, Func<T3,Func<T4, TResult>>>> Cria uma nova função curriada a partir da função informada no parâmetro.
Curry Action<T, T2> action Func<T, Action<T2>> Cria uma nova função curriada a partir da função informada no parâmetro.
Curry Action<T, T2, T3> action Func<T, Func<T2, Action<T3>>> Cria uma nova função curriada a partir da função informada no parâmetro.
Curry Action<T, T2, T3, T4> action Func<T, Func<T2, Func<T3,Action<T4>>>> Cria uma nova função curriada a partir da função informada no parâmetro.

Como Usar

As diversas sobrecargas disponíveis podem ser utilizadas para criar novas funções a partir de funções existentes.

Neste exemplo vamos considerar a função add como uma função que realiza a soma de dois números:

 Func<int, int, int> add = (value, value2) => value + value2;

Ao aplicarmos a função Curry receberemos como retorno uma nova função, esta função irá esperar apenas um dos parâmetros da soma e retornará uma nova função, que por sua vez esperará um último parâmetro e retornará o resultado da soma.

Func<int, int, int> add = 
    (value, value2) => value + value2;

Func<int, Func<int, int>> addCurried = Currying.Curry(add);
curriedResult = addCurried(2)(3);

O conceito para Currying e demais exemplos podem ser encontrados na seção Conceitos > Currying e Aplicação Parcial.

results matching ""

    No results matching ""