Functional Javascript
함수형 프로그래밍에 대한 소개와 Javascript에서의 적용 방법을 담은 책을 읽고 느낀 점과 인상 깊었던 부분을 요약했습니다.
* 배경
유인동 님의 함수형 프로그래밍과 ES6+ 세션을 듣고 함수형 프로그래밍에 관심이 생겨서 읽어보게 되었다. 학교다닐 때부터 함수형 프로그래밍에 대해 공부해봐야지 생각만 해보다가, 이제서야 마음먹고 읽어보게 되었다. 현재 한글판은 절판된 상태여서, 운좋게 중고 서적으로 책을 구해서 읽을 수 있게 되었다.
* 책의 구성
제목에서도 알 수 있듯이, 책은 "Javascript 에서의 함수형 프로그래밍" 에 최적화된 형태로 함수형 프로그래밍을 설명한다. (책 자체가 Underscore.js 를 사용해서 예제 코드들이 작성되어 있다.) 다음과 같은 순서로 책은 구성되어 있다.
- 함수형 자바스크립트 소개
 - 일급 함수와 응용형 프로그래밍
 - 변수 스코프와 글로저
 - 고차 함수
 - 함수로 함수 만들기
 - 재귀
 - 순수성, 불변성, 변경 정책
 - 흐름 기반 프로그래밍
 - 클래스를 이용하지 않는 프로그래밍
 
이론적으로 글로 길게 설명되어 있지는 않고, 코드 예시들로 많은 부분들이 설명되어 있다.
* 인상깊었던 부분들
마이클 포거스는 다음과 같은 방식으로 함수형 프로그래밍에 대해 설명한다.
- 함수 형태로 "존재"의 추상화를 정의한다.
 - 기존 함수를 이용해서 "참거짓" 의 추상화를 정의한다.
 - 위 함수를 다른 함수의 파라미터로 제공해서 어떤 동작을 하도록 한다.
마이클 포거스는 "일급" 에 대해 다음과 같이 설명한다. 
"일급"이라는 용어에는 모든 것을 값으로 취급한다는 의미가 내포되어 있다. 값이 있는 곳이라면 거의 예외 없이 일급 함수를 적용할 수 있다. 자바스크립트는 숫자를 일급으로 취급한다. 마찬가지로 일급 함수도 일급으로 취급한다.
마이클 포거스는 "고차 함수" 에 대해 다음과 같이 설멍햔다.
- 고차 함수는 일급이다.
 - 고차 함수는 함수를 인자로 받는다.
 - 고차 함수는 함수를 결과로 반환한다.
 * 읽은 후 생각
읽고 나서, 이제서야 함수형 프로그래밍에 대해 발을 담궜다는 생각이 들었다. 지금까지는 주로 OOP 기반으로 프로그래밍 기법들을 배웠었는데, 사고 방식 자체를 함수형으로 바꾸고, 이에 대한 다양한 기법들을 읽으니까 재미있었다. 하지만 이 책은 나중에 다시 한 번 읽어봐도 좋을 것 같다. (지금 읽었을 때에는 100% 흡수하지는 못한 느낌이 든다.) 추가로, 함수형 + 반응형의 분야도 공부하고 싶다.. RxJS
이것도 읽어보세요