함수형 프로그래밍 소개

하스켈 2024. 5. 29. 23:12

함수형 프로그래밍을 통해 얻을 수 있는 개선 사항

  1. 코드양이 적어진다.
  2. 최적화하기 쉽다.
  3. 병행/병렬화가 쉽다.
  4. 버그가 발생하기 어렵다.
  5. 문서가 적어진다.

절차형 프로그래밍 언어에서 함수란 특정 명령/절차의 나열에 붙은 라벨에 불과하다.

함수형 프로그래밍에서 함수란 주어진 입력 값만으로 단지 하나의 출력되는 값을 결정하는 규칙인 수학적 의미의 함수이다.

입력에 대한 결과는 하나의 출력으로 나와야 하며, 같은 입력에 대해서는 같은 출력을 기대할 수 있다.

아래와 같은 코드는 함수형 프로그래밍에서의 함수가 아닌데, 그 이유는 외부의 상황에 따라, 콘솔 출력의 결과가 결정되기 떄문이다.

void say(const string& something) {
	std::cout << something << endl;
}

이처럼 프로그래밍에서 상태를 참조하거나 상태에 변화를 줌으로서 다음 번 이후의 결과에 까지 영향을 미치는 효과를 부작용(side effect)이라고 한다.

예를 들어, 입출력은 언어의 외부 세계의 상태에 간섭하므로 부작용이 된다.

프로그래밍에서의 패러다임은 문제를 어떤 관점으로 바라볼 것인지에 관한 것이다.

여러 패러다임이 있고, 각 패러다임을 간단히 알아보면 다음과 같다.

  1. 명령형 프로그래밍: 프로그램은 컴퓨터가 수행해야 할 명령의 나열
  2. 객체지향 프로그래밍: 프로그램은 객체과 그것들과의 메시징
  3. 함수형 프로그래밍: 프로그램이 작은 부품의 조합으로 구성된다.

'하스켈' 카테고리의 다른 글

001. 개요  (0) 2023.07.03