펑셔널 함수(Functional Function)

2경빈·2025년 4월 19일

C#

목록 보기
14/14

펑셔널 함수(Functional Function)

C#에서 펑셔널 함수함수형 프로그래밍 스타일로 작성된 함수를 의미하며, 순수 함수와 고차 함수, 불변성, 람다식을 사용하는 함수 등을 포함하는 개념이다.

함수형 프로그래밍의 핵심 개념

순수 함수(Pure Function)

같은 입력에 항상 같은 출력을 반환하고 외부 상태를 변경하지 않는 함수이다.

고차 함수(Higher-order Function)

함수를 인자로 받거나 함수를 반환하는 함수이다.

불변성(Immutability)

데이터를 직접 수정하지 않고 복사본을 만들어 처리하는 방식이다.

람다식(Lambda Expression)

익명 함수를 간결하게 표현하는 문법이다.

ex)

순수 함수 예시

int Add(int a, int b)
{
    return a + b;
}

→ 입력이 같으면 항상 출력이 같고, 외부 상태에 영향을 주지 않기 때문에 순수 함수라고 할 수 있다.

고차 함수 예시

Func<int, int> MultiplyBy(int factor)
{
    return x => x * factor;
}

var triple = MultiplyBy(3);
Console.WriteLine(triple(10)); // 출력: 30

→ 함수를 반환하는 형태이므로 고차 함수라고 할 수 있다.

LINQ와 람다식 활용 예시

var numbers = new List<int> { 1, 2, 3, 4, 5 };
var squared = numbers.Select(x => x * x).ToList();

foreach (var s in squared)
{
    Console.WriteLine(s);
}

Select는 고차 함수이며, x => x * x는 람다식이고, numbers 컬렉션을 변경하지 않으므로 불변성 개념도 적용된 예시이다.

요약

개념설명
순수 함수입력이 같으면 항상 같은 결과를 반환하며, 외부 상태를 변경하지 않는 함수이다.
고차 함수함수를 인자로 받거나 반환하는 함수이다.
람다식간결한 형태의 익명 함수 표현이다.
불변성데이터나 상태를 직접 수정하지 않고 새로운 복사본으로 처리하는 방식이다.

C#은 기본적으로 객체지향 언어이지만 LINQ, 람다식, Func, Action, Predicate 등의 기능을 통해 함수형 프로그래밍 스타일을 강력하게 지원하고 있다. 이러한 스타일은 코드의 예측 가능성, 유지보수성, 테스트 용이성을 높이기 위해 매우 유용한 접근 방식이다.

profile
eggs before hatching

0개의 댓글