반응형
함수형 프로그래밍에서의 반복문 작성
함수형 프로그래밍 스타일로 코드를 작성하다보면 반복문이 필요한 경우를 만나게 될 것이다.
그런데 이때 갑자기 함수형 스타일이 아닌 기존 스타일로 for문을 사용하는건 뭔가 이상하다고 느껴져서 찾아보게 되었다.
보통 함수형 프로그래밍 스타일에서는 반복문으로 아래 2가지의 함수를 사용한다.
- Enumerable.Range()
- Enumerable.Repeat()
예제 코드
함수형 스타일과 기존 for문 스타일을 비교해서 작성하고 서로의 차이점에 대해서 살펴보자.
using System;
using System.Collections.Generic;
using System.Linq;
public partial class Program
{
static void Main(string[] args)
{
Random rand = new Random();
var list = new List<int>() { 1, 2, 3, 4, 5 };
// Functional Style
var temp = Enumerable.Range(0, 3).Select(i => list.ElementAt(rand.Next(0, list.Count))).ToList();
Console.WriteLine($"Functional: {string.Join(", ", temp)}");
var temp2 = Enumerable.Repeat(0, 3).Select(i => list.ElementAt(rand.Next(0, list.Count))).ToList();
Console.WriteLine($"Functional: {string.Join(", ", temp2)}");
// For Loop Style
var newList = new List<int>();
for (int i = 0; i < 3; i++)
{
var newRandoIndex = rand.Next(0, list.Count);
newList.Add(list[newRandoIndex]);
}
Console.WriteLine($"For Loop: {string.Join(", ", newList)}");
}
}
'프로그래밍 > 함수형 프로그래밍' 카테고리의 다른 글
스칼라(Scala) 핵심 고차 함수 - map, flatten, flatmap (2) | 2024.07.24 |
---|---|
함수를 변수로 사용하기, 함수를 반환값으로 사용하기 (1) | 2024.07.23 |
스칼라(Scala) 리스트에 대해서 알아보자 (1) | 2024.07.23 |
스칼라(Scala) 기본 문법에 대해서 알아보자 (3) | 2024.07.22 |
리스프(LISP) 재귀 함수 구현해보자 (4) | 2024.07.16 |
댓글