본문 바로가기
프로그래밍/함수형 프로그래밍

함수를 변수로 사용하기, 함수를 반환값으로 사용하기

by bantomak 2024. 7. 23.

1급 객체(First-class citizen) 함수 다루기

함수형 프로그래밍에서 함수는 1급 객체이기 때문에 변수에도 담을 수 있고, 반환값으로도 사용할 수 있다.

 

using System;

public partial class Program
{
    static void Main(string[] args)
    {
        // 변수
        Func<int, int> temp1 = x => x;
        Func<int, Func<int, int>> temp2 = x => y => x + y;
        Func<int, Func<int, Func<int, int>>> temp3 = x => y => z => x + y + z;

        // 함수, 메서드
        Func<int, int> temp4(int y) => x => x + y; // 식 본문 멤버
        Func<int, int> temp5(int y)
        {
            return x => x + y;
        }

        // 변수로 사용
        Console.WriteLine(temp1(10));
        Console.WriteLine(temp2(10)(2));
        Console.WriteLine(temp3(10)(3)(2));

        // 반환값으로 사용
        Console.WriteLine(temp4(10)(4));
        Console.WriteLine(temp5(10)(5));
    }
}

 

함수를 반환값으로 사용하면 함수 내의 값을 전달하는 것이 가능하다.

 

변수로 사용하는 경우와 반환값으로 사용하는 경우가 처음에는 헷갈리겠지만 해당 부분을 명확하게 인지하고 가면 이내 익숙해질 것이다.

 

함께 읽으면 좋은 글

 

함수형 프로그래밍 관련 개념 정리

함수형 프로그래밍에 대해서 함수형 프로그래밍은 다음과 같은 테크닉들을 사용하는 것이라고 여겨지고 있다. 일급 함수(First-class function) 익명 함수(Lambda function) 클로져(Closure) 커링(Curring) 대수

jettstream.tistory.com

 

C# 식 본문 멤버(Expression-bodied member)

식 본문 멤버(Expression-bodied member) C#의 속성이나 메서드는 보통 여러 문장(statement)들로 구성된 블록을 실행하게 된다. 하지만 속성이나 메서드의 Body 블록이 간단한 경우, Statement Block을 사용하는

jettstream.tistory.com

댓글