[C# 함수형 프로그래밍] C# 커링, 논커링
- C#/C# 문법
- 2021. 12. 1. 23:51
참조
- C#으로 배우는 함수형 프로그래밍
- https://ko.wikipedia.org/wiki/%EC%BB%A4%EB%A7%81
- 함수형 프로그래밍
C# 커링이란?
- 커링(currying) 이란 다중 인수를 갖는 함수를 단일 인수를 갖는 함수들의 함수열로 바꾸는 것을 의미합니다.
- 즉, 커링을 사용하는 목적은 여러 개의 인수를 가지는 함수를 인수의 일부를 담당하는 일련의 함수들로 나누고자 함에 있습니다.
- 필요한 개수보다 적은 인수를 함수에 전달하면 원래 함수의 전체 기능을 완수하기 위해 쪼개진 함수 가운데 다음 함수를 호출해야 한다는 것입니다.
- 그럼 실제 예제를 통해서 C#에서 논커링, 커링 함수들이 무엇인지 예제 코드를 통해서 살펴 보겠습니다.
논커링 예제코드
using System;
namespace interfaceTest
{
class Program
{
static void Main(string[] args)
{
int add = NonCurriedAdd(5, 6);
Console.WriteLine($"add value = {add}");
}
static int NonCurriedAdd(int a, int b)
{
return a + b;
}
}
}
- 위와 같은 함수는 우리가 평소에 자주 접하는 함수입니다.
- 이제 위의 함수 내용을 커링 함수로 바꿔서 작성해 보도록 하겠습니다.
커링 예제코드
using System;
namespace interfaceTest
{
class Program
{
static void Main(string[] args)
{
var add = CurriedAddFunction(5);
int number = add(6);
Console.WriteLine($"add value = {number}");
}
static Func<int, int> CurriedAddFunction(int a) => b => a + b;
}
}
- Func 대리자를 이용해서 CurriedAddFunction 메서드를 생성하였습니다.
- 논커링, 커링 메서드를 실행해 결과 값을 비교하면 모두 11 이라는 값으로 결과는 완벽히 일치하는 것을 확인할 수 있습니다.
728x90
'C# > C# 문법' 카테고리의 다른 글
[C# 함수형 프로그래밍] C# 간단한 대리자(delegate) (0) | 2021.12.02 |
---|---|
[C# 함수형 프로그래밍] C# 대리자(delegate) (0) | 2021.12.02 |
[C# 문법] C# ValueTuple (0) | 2021.12.01 |
[C# 문법] 순수 함수란? (0) | 2021.11.29 |
[C# 문법] C# 인터페이스 (0) | 2021.11.29 |
이 글을 공유하기