Currying

Tango.Functional.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.

Last updated