ES6와 로대시, 람다JS, RxJS와 함께하는 함수형 프로그래밍
함수형 프로그래밍은 먼 나라 이야기가 아닙니다. 특히 사소한 부분 하나가 시스템 전체를 망가뜨릴 수 있는 웹 애플리케이션에서 함수형과 리액티브 프로그래밍의 이점이 더욱 주목받고 있습니다. 함수형 프로그래밍의 원칙을 따르면 성능은 물론 확장, 모듈화, 재사용, 테스트 등 많은 측면에서 개선을 꾀할 수 있습니다. 이 책은 웹의 미래인 ES6와 떠오르는 함수형 라이브러리 로대시, 람다JS, RxJS 등을 활용하여 실무에 강한 함수형 프로그래밍의 세계에 안착하게 도와줍니다.
Part I 함수형으로 사고하기
CHAPTER 1 함수형 길들이기
1.1 함수형 프로그래밍은 과연 유용한가?
1.2 함수형 프로그래밍이란?
1.3 함수형 프로그래밍의 좋은 점
1.4 마치며
CHAPTER 2 고계 자바스크립트
2.1 왜 자바스크립트인가?
2.2 함수형 대 객체지향 프로그래밍
2.3 함수
2.4 클로저와 스코프
2.5 마치며
Part II 함수형으로 전환하기
CHAPTER 3 자료구조는 적게, 일은 더 많이
3.1 애플리케이션의 제어 흐름
3.2 메서드 체이닝
3.3 함수 체이닝
3.4 코드 헤아리기
3.5 재귀적 사고방식
3.6 마치며
CHAPTER 4 재사용 가능한, 모듈적인 코드로
4.1 메서드 체인 대 함수 파이프라인
4.2 함수 호환 요건
4.3 커리된 함수를 평가
4.4 부분 적용과 매개변수 바인딩
4.5 함수 파이프라인을 합성
4.6 함수 조합기로 제어 흐름을 관리
4.7 마치며
CHAPTER 5 복잡성을 줄이는 디자인 패턴
5.1 명령형 에러 처리의 문제점
5.2 더 나은 방안: 함수자
5.3 모나드를 응용한 함수형 에러 처리
5.4 모나드 체인 및 합성
5.5 마치며
Part III 함수형 스킬 갈고닦기
CHAPTER 6 빈틈없는 코드 만들기
6.1 함수형 프로그래밍과 단위 테스트
6.2 명령형 프로그램 테스트의 어려움
6.3 함수형 코드를 테스트
6.4 속성 기반 테스트로 명세 담기
6.5 코드 실행률로 효율 측정
6.6 마치며
CHAPTER 7 함수형 최적화
7.1 함수 실행의 내부 작동 원리
7.2 느긋한 평가로 실행을 늦춤
7.3 ‘필요할 때 부르리’ 전략
7.4 재귀와 꼬리 호출 최적화
7.5 마치며
CHAPTER 8 비동기 이벤트와 데이터를 관리
8.1 골칫덩이 비동기 코드
8.2 비동기 로직을 프라미스로 일급화
8.3 느긋한 데이터 생성
8.4 RxJS를 응용한 함수형 리액티브 프로그래밍
8.5 마치며
APPENDIX A 이 책에서 사용한 자바스크립트 라이브러리
A.1 함수형 자바스크립트 라이브러리
__A.1.1 로대시JS
__A.1.2 람다JS
__A.1.3 RxJS
A.2 기타 라이브러리
__A.2.1 Log4js
__A.2.2 QUnit
__A.2.3 시논JS
__A.2.4 블랭킷JS
__A.2.5 JSCheck
APPENDIX B 한국어판 부록: 예제 실습 안내
B.1 노드JS 설치 및 QUnit 테스트
B.2 브라우저 콘솔창에서 실습
검증된 자바스크립트 라이브러리로 입문하는 함수형 프로그래밍의 신세계
복잡한 웹 애플리케이션에서는 자바스크립트 코드의 사소한 부분 하나가 시스템 전체를 망가뜨릴 수 있습니다. 함수형 프로그래밍의 원칙을 따라 코딩하면 이런 사태를 막고 애플리케이션의 설계, 의사소통, 유지보수를 수월하게 할 수 있습니다.
이 책은 웹 애플리케이션을 개선하는 함수형 자바스크립트 기법을 알려줍니다. 성능은 물론이고 확장, 모듈화, 재사용, 테스트 등 웹 개발의 많은 측면을 개선할 수 있습니다. 로대시, 람다JS, RxJS 등 모던 웹 개발의 대세로 떠오른 함수형/리액티브 라이브러리를 활용한 구체적인 예제를 살펴봅니다.
순수함수, 부수효과, 선언적 프로그래밍 등 함수형 프로그래밍의 중심 사상을 살펴보는 1부는 명령형에서 함수형 자바스크립트로 넘어가는 길잡이 역할을 합니다. 2부에서는 함수 체인, 커링, 합성, 모나드 등 핵심 기법을 다룹니다. 이를 토대로 고계함수와 재귀를 조합하여 코드를 작성하는 법을 배우고 모듈화 및 에러 처리에 활용합니다. 3부는 단위 테스트, 최적화, 비동기 이벤트 등 웹 개발자가 실무에서 맞닥뜨리는 난제를 함수형 프로그래밍(리액티브 프로그래밍)으로 풀어봅니다.
주요 내용
● 실무 친화적인 함수형 프로그래밍 기법
● 용도에 맞게 함수형 프로그래밍 적용하기
● 구현과 로직을 분리하여 생산성 높이기
● 함수형 스타일의 에러 처리, 테스트, 디버깅
● 모든 예제는 ES6로 작성(이터레이터, 제너레이터, 프라미스 활용법)
닐 포드
스티븐 블랙히스 , 앤서니 존스
이선 브라운