Currying은 여러 개의 인자를 가진 함수를 호출 할 경우, 파라미터의 수보다 적은 수의 파라미터를 인자로 받으면서 누락된 파라미터를 인자로 받는 기법을 말한다. 즉 커링은 함수 하나가 n개의 인자를 받는 과정을 n개의 함수로 각각의 인자를 받도록 하는 것이다. 부분적으로 적용된 함수를 체인으로 계속 생성해 결과적으로 값을 처리하도록 하는 것이 그 본질이다.
함수형 프로그래밍에서 하나의 함수가 다수의 인자를 순차적으로 받아들이는 기법
// 1단계: 커링된 함수 정의
let sum = x => y => x+y;
// 2단계: 함수 사용
let sum5 = sum(5);
let sum12 = sum5(7);
console.log(sum12, sum(5)(7)); // 12 12
import java.util.function.Function;
public class CurryingExample {
public static void main(String[] args) {
// 1단계: 커링된 함수 정의
Function<Integer, Function<Integer, Integer>> curriedAdd = x -> y -> x + y;
// 2단계: 함수 사용
Function<Integer, Integer> add5 = curriedAdd.apply(5);
int result = add5.apply(10); // 15
System.out.println(result + " | " + curriedAdd.apply(5).apply(10));
}
}
CurryingExample.main(null); // 15 | 15