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));
}
}
함수를 반환값으로 사용하면 함수 내의 값을 전달하는 것이 가능하다.
변수로 사용하는 경우와 반환값으로 사용하는 경우가 처음에는 헷갈리겠지만 해당 부분을 명확하게 인지하고 가면 이내 익숙해질 것이다.
함께 읽으면 좋은 글
'프로그래밍 > 함수형 프로그래밍' 카테고리의 다른 글
C# 함수형 프로그래밍 스타일로 반복문 작성하기 (0) | 2024.08.21 |
---|---|
스칼라(Scala) 핵심 고차 함수 - map, flatten, flatmap (2) | 2024.07.24 |
스칼라(Scala) 리스트에 대해서 알아보자 (1) | 2024.07.23 |
스칼라(Scala) 기본 문법에 대해서 알아보자 (3) | 2024.07.22 |
리스프(LISP) 재귀 함수 구현해보자 (4) | 2024.07.16 |
댓글