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.

Last updated