본문 바로가기

Programmer Jinyo/Developing

함수형 프로그래밍 공부 개인 노트


투명한 기부를 하고싶다면 이 링크로 와보세요! 🥰 (클릭!)

바이낸스(₿) 수수료 평생 20% 할인받는 링크로 가입하기! 🔥 (클릭!)

함수형 프로그래밍을 할 때 필요한 개념

 

1급 객체 or 1급 함수

- 변수나 데이터 구조 안에 담을 수 있음

- 파라미터로 전달할 수 있음

- return value로 사용할 수 있음

- 할당에 사용된 이름과 관계없이 고유한 구별이 가능

- 동적으로 프로퍼티 할당이 가능

 

High-Order Function (고차함수, 고계함수)

- 함수에 함수를 파라미터로 전달할 수 있다.

- 함수의 반환값으로 함수를 사용할 수 있다.

(1급 함수의 부분집합)

 

불변성 (Immutablility)

- 데이터가 변할 수 없다.

- 데이터 변경이 필요한 경우 원본 데이터 구조를 변경하지 않고 그 데이터를 복사본을 만들어 그 일부를 변경하고 변경한 복사본을 사용해 작업을 진행함.

 

Pure function (순수 함수)

- 동일한 입력에는 항상 같은 값을 반환해야 함.

- 함수의 실행은 프로그램의 실행에 영향을 미치지 않아야 한다. (no side effect)

(즉 내부가 훤히 드러나 보여야 하고 그 안쪽에서 다른 외적인 부분을 변경하지 않는 것)

 

Function composition (함수 합성)

- 새로운 함수를 만들거나 계산하기 위해 둘 이상의 함수를 조합함. 함수형 프로그래밍에서는 여러 작은 순수 함수들로 이루어져 있기 때문에 이 함수들을 연쇄적, 병렬적으로 호출해서 더 큰 함수를 만드는 과정으로 전체 프로그램을 구축해야 함. (이 과정에서 시간복잡도적인 비효율성이 다소 발생 가능;;)

 

 

 

 

--------------------

 

 

함수의 입 / 출력이 표면에 드러나 있어야 한다.

함수의 내부적으로 숨겨진 입 출력이 있는 것 보다는, 함수를 call 하는 시점에 그 내부적인 코드를 더욱 예상가능하게 작성해야 한다. 그런 시점에서 더욱 side-effect가 적은 코드를 작성할 수 있게 된다.

 

고수준의 추상적 사고를 통해서 프로그래밍 하는 것은 더욱 세부적인 구현보다 큰 그림을 보기 편하게 만든다.

 

 

클로저란 (다시 정리)

그 코드 내부에서 참조되는 인수에 대한 묵시적 바인딩을 지닌 함수를 칭한다.

 

 

 

 

참고 링크

https://velog.io/@kyusung/%ED%95%A8%EC%88%98%ED%98%95-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%9A%94%EC%95%BD