Functional Javascript

함수형 프로그래밍에 대한 소개와 Javascript에서의 적용 방법을 담은 책을 읽고 느낀 점과 인상 깊었던 부분을 요약했습니다.


* 배경

유인동 님의 함수형 프로그래밍과 ES6+ 세션을 듣고 함수형 프로그래밍에 관심이 생겨서 읽어보게 되었다. 학교다닐 때부터 함수형 프로그래밍에 대해 공부해봐야지 생각만 해보다가, 이제서야 마음먹고 읽어보게 되었다. 현재 한글판은 절판된 상태여서, 운좋게 중고 서적으로 책을 구해서 읽을 수 있게 되었다.

* 책의 구성

제목에서도 알 수 있듯이, 책은 "Javascript 에서의 함수형 프로그래밍" 에 최적화된 형태로 함수형 프로그래밍을 설명한다. (책 자체가 Underscore.js 를 사용해서 예제 코드들이 작성되어 있다.) 다음과 같은 순서로 책은 구성되어 있다.

  1. 함수형 자바스크립트 소개
  2. 일급 함수와 응용형 프로그래밍
  3. 변수 스코프와 글로저
  4. 고차 함수
  5. 함수로 함수 만들기
  6. 재귀
  7. 순수성, 불변성, 변경 정책
  8. 흐름 기반 프로그래밍
  9. 클래스를 이용하지 않는 프로그래밍

이론적으로 글로 길게 설명되어 있지는 않고, 코드 예시들로 많은 부분들이 설명되어 있다.

* 인상깊었던 부분들

마이클 포거스는 다음과 같은 방식으로 함수형 프로그래밍에 대해 설명한다.

"일급"이라는 용어에는 모든 것을 값으로 취급한다는 의미가 내포되어 있다. 값이 있는 곳이라면 거의 예외 없이 일급 함수를 적용할 수 있다. 자바스크립트는 숫자를 일급으로 취급한다. 마찬가지로 일급 함수도 일급으로 취급한다.
마이클 포거스는 "고차 함수" 에 대해 다음과 같이 설멍햔다.

  • 고차 함수는 일급이다.
  • 고차 함수는 함수를 인자로 받는다.
  • 고차 함수는 함수를 결과로 반환한다.

* 읽은 후 생각

읽고 나서, 이제서야 함수형 프로그래밍에 대해 발을 담궜다는 생각이 들었다. 지금까지는 주로 OOP 기반으로 프로그래밍 기법들을 배웠었는데, 사고 방식 자체를 함수형으로 바꾸고, 이에 대한 다양한 기법들을 읽으니까 재미있었다. 하지만 이 책은 나중에 다시 한 번 읽어봐도 좋을 것 같다. (지금 읽었을 때에는 100% 흡수하지는 못한 느낌이 든다.) 추가로, 함수형 + 반응형의 분야도 공부하고 싶다.. RxJS


이것도 읽어보세요