[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
는 세 개의 인자를 받아들이는 함수를 커링한 함수입니다.
add5
와 add8
에서 순차적으로 부분 적용을 통해 커링된 함수를 생성합니다.
이를 통해 람다식을 사용하여 C#에서 간단하게 함수 커링을 구현할 수 있습니다.
참고문헌:
- https://en.wikipedia.org/wiki/Currying
- https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/statements-expressions-operators/lambda-expressions