Currying de funciones es un concepto de dividir una función con muchos argumentos en muchas funciones con un solo argumento de tal manera que el resultado sea el mismo. En otras palabras, es una técnica para simplificar una función de argumento de varios valores en funciones múltiples de argumento de un solo valor.
Considere el ejemplo para aclarar el concepto:
Currying divide las funciones de orden superior en una serie de funciones en cascada más pequeñas que toman un argumento y devuelven una función excepto la última función en cascada que devuelve el valor deseado.
Por ejemplo:
Sea una función que mapee como
Currying la función anterior producirá
Por lo tanto , se asigna de a una función que a su vez se asigna de a
La expresión matemática anterior también se puede representar como:
Por eso,
A continuación se muestran algunos ejemplos en Java para demostrar la función Currying:
Ejemplo 1: sumar 2 números usando la función 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
Ejemplo 2: Multiplicar 2 números usando Currying de funciones
// 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
Ejemplo 3: sumar 3 números usando la función 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