[java] 함수형 인터페이스를 사용하여 커링(Currying)을 구현하는 방법은 어떻게 되나요?

처음으로 커링을 구현하기 위해 하나의 인자를 받는 함수형 인터페이스를 정의해야 합니다. 자바에서는 Function 인터페이스를 사용할 수 있습니다. Function 인터페이스는 하나의 입력 값을 받아서 결과 값을 리턴하는 메소드를 정의하고 있습니다. 이를 이용하여 커링을 구현할 수 있습니다.

아래는 자바에서 커링을 구현하는 예제 코드입니다.

import java.util.function.Function;

public class CurryingExample {
    public static void main(String[] args) {
        // 커링을 구현할 함수 정의
        Function<Integer, Function<Integer, Integer>> multiply = x -> y -> x * y;

        // 첫 번째 인자를 고정하여 새로운 함수 생성
        Function<Integer, Integer> multiplyByTwo = multiply.apply(2);

        // 커링된 함수 사용
        int result = multiplyByTwo.apply(5); // 결과: 10
        System.out.println(result);
    }
}

위의 예제에서 multiply 함수는 두 개의 인자를 받아서 곱셈을 수행합니다. 이 함수를 Function 인터페이스를 사용하여 커링할 수 있습니다. multiplyByTwo 함수는 multiply 함수에서 첫 번째 인자를 2로 고정한 커링된 함수입니다. 따라서 multiplyByTwo 함수를 적용할 때에는 하나의 인자만 전달하면 됩니다.

커링은 함수형 프로그래밍에서 유용하게 사용되는 기법 중 하나이며, 자바에서도 함수형 인터페이스를 활용하여 간단하게 구현할 수 있습니다.

참고 자료: