[C# 함수형 프로그래밍] C# 커링, 논커링

참조



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

이 글을 공유하기

댓글

Designed by JB FACTORY