투명한 기부를 하고싶다면 이 링크로 와보세요! 🥰 (클릭!)
바이낸스(₿) 수수료 평생 20% 할인받는 링크로 가입하기! 🔥 (클릭!)
함수형 프로그래밍을 할 때 필요한 개념
1급 객체 or 1급 함수
- 변수나 데이터 구조 안에 담을 수 있음
- 파라미터로 전달할 수 있음
- return value로 사용할 수 있음
- 할당에 사용된 이름과 관계없이 고유한 구별이 가능
- 동적으로 프로퍼티 할당이 가능
High-Order Function (고차함수, 고계함수)
- 함수에 함수를 파라미터로 전달할 수 있다.
- 함수의 반환값으로 함수를 사용할 수 있다.
(1급 함수의 부분집합)
불변성 (Immutablility)
- 데이터가 변할 수 없다.
- 데이터 변경이 필요한 경우 원본 데이터 구조를 변경하지 않고 그 데이터를 복사본을 만들어 그 일부를 변경하고 변경한 복사본을 사용해 작업을 진행함.
Pure function (순수 함수)
- 동일한 입력에는 항상 같은 값을 반환해야 함.
- 함수의 실행은 프로그램의 실행에 영향을 미치지 않아야 한다. (no side effect)
(즉 내부가 훤히 드러나 보여야 하고 그 안쪽에서 다른 외적인 부분을 변경하지 않는 것)
Function composition (함수 합성)
- 새로운 함수를 만들거나 계산하기 위해 둘 이상의 함수를 조합함. 함수형 프로그래밍에서는 여러 작은 순수 함수들로 이루어져 있기 때문에 이 함수들을 연쇄적, 병렬적으로 호출해서 더 큰 함수를 만드는 과정으로 전체 프로그램을 구축해야 함. (이 과정에서 시간복잡도적인 비효율성이 다소 발생 가능;;)
--------------------
함수의 입 / 출력이 표면에 드러나 있어야 한다.
함수의 내부적으로 숨겨진 입 출력이 있는 것 보다는, 함수를 call 하는 시점에 그 내부적인 코드를 더욱 예상가능하게 작성해야 한다. 그런 시점에서 더욱 side-effect가 적은 코드를 작성할 수 있게 된다.
고수준의 추상적 사고를 통해서 프로그래밍 하는 것은 더욱 세부적인 구현보다 큰 그림을 보기 편하게 만든다.
클로저란 (다시 정리)
그 코드 내부에서 참조되는 인수에 대한 묵시적 바인딩을 지닌 함수를 칭한다.
참고 링크