Currying
This static class contains several overloads for the Currying operation, where each overload deals with functions that contains different amounts of parameters, with or without a return.
Methods
Name | Parameters | Returns | Description |
---|---|---|---|
Curry | Func<T, T2, TResult> function | Func<T, Func<T2, TResult>> | Creates a new curried method of function. |
Curry | Func<T, T2, T3, TResult> function | Func<T, Func<T2, Func<T3,TResult>>> | Creates a new curried method of function. |
Curry | Func<T, T2, T3, T4, TResult> function | Func<T, Func<T2, Func<T3,Func<T4, TResult>>>> | Creates a new curried method of function. |
Curry | Action<T, T2> action | Func<T, Action<T2>> | Creates a new curried method of function. |
Curry | Action<T, T2, T3> action | Func<T, Func<T2, Action<T3>>> | Creates a new curried method of function. |
Curry | Action<T, T2, T3, T4> action | Func<T, Func<T2, Func<T3,Action<T4>>>> | Creates a new curried method of function. |
Usage
The overloads available in this class can be used to create new functions from existing functions.
In this example we'll consider an add
function as a function that performs a sum of two numbers:
Func<int, int, int> add = (value, value2) => value + value2;
With the application of the Curry
function is created a new function as return, this function needs only one of the parameters of the sum as argument and returns a new function. This last function needs the last parameter of the sum and return the result of this operation.
Func<int, int, int> add =
(value, value2) => value + value2;
Func<int, Func<int, int>> addCurried = Currying.Curry(add);
curriedResult = addCurried(2)(3);
The fundamentals about Currying and another examples can be find in Fundamentals> Currying and Partial Application.