Currying Functions in Java with Examples
Function Currying is a concept of breaking a function with many arguments into many functions with single argument in such a way, that the output is same. In other words, its a technique of simplifying a multi-valued argument function into single-valued argument multi-functions.
Consider the example to clear the concept:

Currying breaks down higher order functions into a series of smaller cascaded functions which take in one argument and return a function except for the last cascaded function which returns the desired value.
For example:
Let there be a function which maps as
![]()
Currying the above function will produce
![]()
Thus
maps from
to a function which in turn maps from
to ![]()
The above mathematical expression can also be represented as:
![]()
Hence, ![]()
Below are some examples in Java to demonstrate Function Currying:
Example 1: Adding 2 numbers using Function Currying
// Java Program to demonstrate Function Currying import java.util.function.Function; public class GFG { public static void main(String args[]) { // Using Java 8 Functions // to create lambda expressions for functions // and with this, applying Function Currying // Curried Function for Adding u & v Function<Integer, Function<Integer, Integer> > curryAdder = u -> v -> u + v; // Calling the curried functions // Calling Curried Function for Adding u & v System.out.println("Add 2, 3 :" + curryAdder .apply(2) .apply(3)); } } |
Add 2, 3 :5
Example 2: Multiplying 2 numbers using Function Currying
// Java Program to demonstrate Function Currying import java.util.function.Function; public class GFG { public static void main(String args[]) { // Using Java 8 Functions // to create lambda expressions for functions // and with this, applying Function Currying // Curried Function for Multiplying u & v Function<Integer, Function<Integer, Integer> > curryMulti = u -> v -> u * v; // Calling the curried functions // Calling Curried Function for Multiplying u & v System.out.println("Multiply 2, 3 :" + curryMulti .apply(2) .apply(3)); } } |
Multiply 2, 3 :6
Example 3: Adding 3 numbers using Function Currying
// Java Program to demonstrate Function Currying import java.util.function.Function; public class GFG { public static void main(String args[]) { // Using Java 8 Functions // to create lambda expressions for functions // and with this, applying Function Currying // Curried Function for Adding u, v & w Function<Integer, Function<Integer, Function<Integer, Integer> > > triadder = u -> w -> v -> u + w + v; // Calling the curried functions // Calling Curried Function for Adding u, v & w System.out.println("Add 2, 3, 4 :" + triadder .apply(2) .apply(3) .apply(4)); } } |
Add 2, 3, 4 :9
Recommended Posts:
- Trigonometric Functions in Java with Examples
- Java | Functions | Question 9
- Java | Functions | Question 2
- Java | Functions | Question 10
- Java | Functions | Question 3
- Java | Functions | Question 8
- Java | Functions | Question 5
- Java | Functions | Question 11
- Java | Functions | Question 7
- Java | Functions | Question 6
- Java | Functions | Question 1
- Java | Functions | Question 4
- Shadowing of static functions in Java
- Java.util.LinkedList.poll(), pollFirst(), pollLast() with examples in Java
- Java lang.Long.numberOfTrailingZeros() method in Java with Examples
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

