*혼자 공부하는 내용이라 틀릴 수 있고, 알려주시면 감사하겠습니다!

함수형 프로그래밍은 프로세스(방법론)이다.

함수형 프로그래밍은은 순수 함수를 조합해서 최대한 부작용을 피하여 소프트웨어를 만드는 프로세스(방법)이다.
(부작용을 피한다는 것은 함수로부터 예상치 못한 결과를 얻는 것을 의미하는 듯하다.)

순수 함수

주어진 인자 외에 결과에 영향을 끼치는 요소가 없는 함수를 순수 함수라고 한다.

function plus(num1, num2){
    return num1+num2
}
 // plus는 입력값 num1, num2에 의해서 출력 값이 결정 되기 때문에 순수 함수라고 할 수 있다!
function plus(num1){
    var num2 = stack.pop();
    return num1+num2
}
 // 이 함수는 입력 값 num1, 스택에서 튀어나오는 num2에 의해 결과가 달라진다.
 때문에 입력 값 외에 출력 값에 영향을 끼치는 요소가 있다고 할 수 있고
 순수 함수가 아니다!

그래서 1급 객체 얘기는 왜 나오는 거?

  1. 변수에 할당할 수 있다.
  2. 파라미터로 사용할 수 있다.
  3. 반환 값으로 사용할 수 있다.

위 3가지를 만족하면 1급 객체라고 한다.

그런데 함수형 프로그래밍 이란 '순수 함수'를 조합해서 부작용을 줄이는 방법을 의미하고.

조합을 하기 위해서는 변수, 파라미터, 반환 값에 순수 함수가 들어갈 수 있어야 조합하기 쉬워서 1급객체를 언급하는 듯하다!!