Tango
  • Introduction
  • Getting Started
    • Summary
    • From me, the Developer
    • What is Tango?
    • Where to start?
  • Installation
    • Based on NuGet
    • Manually
  • Fundamentals
    • Introduction
    • Using Pattern Matching
    • Option values
    • Either values
    • From void to Unit
    • Func and Action
    • Chainable operations in a Continuation flow
    • Currying and Partial Application
  • Functional
    • Introduction
    • Currying
    • Partial Application
    • Functional Extensions
    • QuickCast to Delegates
  • Operations
    • Introduction
    • Operations with Booleans
    • Operations with Integers
    • Operations with Decimals
    • Operations with Doubles
    • Operations with Strings
  • Types
    • Introduction
    • Unit
    • Option<T>
    • Either<TLeft, TRight>
    • Continuation<TFail, TSuccess>
  • Modules
    • Introduction
    • Option
      • Apply
      • AsEnumerable
      • Bind
      • Count
      • Exists
      • Filter
      • Fold
      • FoldBack
      • Iterate
      • Map
      • OfNullable
      • ToArray
      • ToList
      • ToNullable
    • Either
      • Exists
      • Iterate
      • Fold
      • FoldBack
      • Map
      • Swap
      • ToTuple
    • Continuation
      • AsContinuation
      • Resolve
      • Reject
      • All
    • Collection
      • Append
      • Choose
      • ChunkBySize
      • Collect
      • CompareWith
      • CountBy
      • Concat
      • Distinct
      • Empty
      • Exists
      • Exists2
      • Filter
      • FindIndex
      • Fold
      • Fold2
      • FoldBack
      • FoldBack2
      • ForAll
      • ForAll2
      • ForAll3
      • Head
      • HeadAndTailEnd
      • Range
      • Generate
      • Initialize
      • Iterate
      • Iterate2
      • IterateIndexed
      • IterateIndexed2
      • Map
      • Map2
      • Map3
      • MapIndexed
      • MapIndexed2
      • MapIndexed3
      • Partition
      • Permute
      • Pick
      • Reduce
      • ReduceBack
      • Replicate
      • Scan
      • Scan2
      • ScanBack
      • ScanBack2
      • Tail
      • TryFind
      • TryPick
      • Unzip
      • Unzip3
      • Zip
      • Zip3
  • Extensions
    • Introduction
    • Enum Extensions
    • EqualityComparer Builder
    • Modules as Extensions
Powered by GitBook
On this page
  • Methods
  • Usage

Was this helpful?

  1. Functional

Partial Application

PreviousCurryingNextFunctional Extensions

Last updated 5 years ago

Was this helpful?

This static class contains several overloads for the Partial Application operation, where each overload deals with functions that contains different amounts of parameters, with or without a return.

Methods

Name

Parameters

Returns

Description

PartialApply

Func<T, TResult> function

T parameter

Func<TResult>

Creates a new function by partial applies the parameters into the function.

PartialApply

Func<T, T2, TResult> function

T parameter

T2 parameter2

Func<TResult>

Creates a new function by partial applies the parameters into the function.

PartialApply

Func<T, T2, TResult> function

T parameter

Func<T2,TResult>

Creates a new function by partial applies the parameters into the function.

PartialApply

Func<T, T2, T3, TResult> function

T parameter

T2 parameter2

T3 parameter3

Func<TResult>

Creates a new function by partial applies the parameters into the function.

PartialApply

Func<T, T2, T3, TResult> function

T parameter

T2 parameter2

Func<T3, TResult>

Creates a new function by partial applies the parameters into the function.

PartialApply

Func<T, T2, T3, TResult> function

T parameter

Func<T2, T3, TResult>

Creates a new function by partial applies the parameters into the function.

PartialApply

Func<T, T2, T3, T4, TResult> function

T parameter

T2 parameter2

T3 parameter3

T4 parameter4

Func<TResult>

Creates a new function by partial applies the parameters into the function.

PartialApply

Func<T, T2, T3, T4, TResult> function

T parameter

T2 parameter2

T3 parameter3

Func<T4, TResult>

Creates a new function by partial applies the parameters into the function.

PartialApply

Func<T, T2, T3, T4, TResult> function

T parameter

T2 parameter2

Func<T3, T4, TResult>

Creates a new function by partial applies the parameters into the function.

PartialApply

Func<T, T2, T3, T4, TResult> function

T parameter

Func<T2, T3, T4, TResult>

Creates a new function by partial applies the parameters into the function.

PartialApply

Action<T> action

T parameter

Action

Creates a new function by partial applies the parameters into the function.

PartialApply

Action<T, T2> action

T parameter

T2 parameter2

Action

Creates a new function by partial applies the parameters into the function.

PartialApply

Action<T, T2> action

T parameter

Action<T2>

Creates a new function by partial applies the parameters into the function.

PartialApply

Action<T, T2, T3> action

T parameter

T2 parameter2

T3 parameter3

Action

Creates a new function by partial applies the parameters into the function.

PartialApply

Action<T, T2, T3> action

T parameter

T2 parameter2

Action<T3>

Creates a new function by partial applies the parameters into the function.

PartialApply

Action<T, T2, T3> action

T parameter

Action<T2, T3>

Creates a new function by partial applies the parameters into the function.

PartialApply

Action<T, T2, T3, T4> function

T parameter

T2 parameter2

T3 parameter3

T4 parameter4

Action

Creates a new function by partial applies the parameters into the function.

PartialApply

Action<T, T2, T3, T4> function

T parameter

T2 parameter2

T3 parameter3

Action<T4>

Creates a new function by partial applies the parameters into the function.

PartialApply

Action<T, T2, T3, T4> function

T parameter

T2 parameter2

Action<T3, T4>

Creates a new function by partial applies the parameters into the function.

PartialApply

Action<T, T2, T3, T4> function

T parameter

Action<T2, T3, T4>

Creates a new function by partial applies the parameters into the function.

Usage

The overloads available in this class can be used to create new functions from existing functions as well as Currying class.

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 PartialApply function is created a new function as return, this function needs the last parameter of the sum and returns the result of this operation.

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

Func<int, int> addPartial = PartialApplication.PartialApply(add, 2);
int partialResult = addPartial(3);

The major difference between Currying and Partial application is the fact that, when the partial application is used is also necessary inform at least one parameter to apply to the target function.

Other interesting fact about this operation in particular is its returns. Partial Application creates a new function just as Currying does, but this time, the created function must receive all remaining parameters.

The fundamentals about Partial Application and another examples can be find in .

Tango.Functional.PartialApplication
Fundamentals > Currying and Partial Application