[c#] 람다식을 사용하여 어떻게 함수 커링을 할 수 있나요?

함수 커링은 여러 개의 인자를 가진 함수를 하나의 인자를 받는 함수들로 변환하는 고차 함수 형태의 프로그래밍 기법입니다.

예를 들어, add(a, b, c) 라는 함수가 있다면 커링을 통해 add(a)(b)(c) 와 같이 호출할 수 있게 됩니다.

C#에서 람다식을 이용한 함수 커링

람다식을 이용하면 C#에서 함수 커링을 간단하게 구현할 수 있습니다. 다음은 함수 커링을 수행하는 예제 코드입니다.

using System;

class Program
{
    static void Main()
    {
        Func<int, Func<int, Func<int, int>>> curriedAdd = a => b => c => a + b + c;
        Func<int, Func<int, int>> add5 = curriedAdd(5);
        Func<int, int> add8 = add5(3);

        Console.WriteLine(add8(2));  // 출력 결과: 10
    }
}

위의 예제에서 curriedAdd 는 세 개의 인자를 받아들이는 함수를 커링한 함수입니다. add5add8에서 순차적으로 부분 적용을 통해 커링된 함수를 생성합니다.

이를 통해 람다식을 사용하여 C#에서 간단하게 함수 커링을 구현할 수 있습니다.

참고문헌: