CS

[CS] 선언형과 함수형 프로그래밍

펭귄코기 2022. 10. 22. 21:26

선언형 프로그래밍(declarative programming)

무엇을 풀어내는가에 집중하는 패러다임이며

프로그램은 함수로 이루어진 것이다 라는 명제가 담겨있는 패러다임이다

 

함수형 프로그래밍(functional programming)

선언형 패러다임의 일종이다

작은 순수함수들을 블록처럼 쌓아 로직을 구현하고

고차 함수를 통해 재사용성을 높인 프로그래밍 패러다임이다

 

순수 함수

출력이 입력에만 의존하는 것을 의미한다

const pure = ( a, b ) => {
    return a + b
}

 

pure 함수는 들어오는 매개변수 a, b에만 영향을 받는다

a, b 말고 다른 전역 변수가 영향을 주면 순수 함수가 아니다

 

고차 함수

함수가 함수를 값처럼 매개변수로 받아 로직을 생성할 수 있는 것을 말한다

 

이때 고차 함수를 쓰기위해서는 해당 언어가 일급 객체라는 특징을 가져야한다

- 변수나 메서드에 함수를 할당할 수 있다

- 함수 안에 함수를 매개변수로 담을 수 있다

- 함수가 함수를 반환할 수 있다

 

function double(num) {
  return num * 2;
}
// doubleNum 함수는 고차 함수이다. (다른 함수를 인자로 받음)
// doubleNum 함수의 인자 func에 함수가 들어올 경우
// func은 doubleNum의 콜백 함수이다.
function doubleNum(func, num) {
  return func(num);
}