1부. C++의 함수형 빌딩 블록
1장. 함수형 프로그래밍 소개
__기술적 요구사항
__함수형 프로그래밍 소개
__도처에 존재하는 함수형 프로그래밍의 구조
__구조화된 루프와 함수형 루프 비교
__불변성
__OOP와 함수형 디자인 스타일 비교
__모듈 확장성과 중복 제거
__요약
__질문
2장. 순수 함수 이해하기
__기술적 요구사항
__순수 함수란?
__C++에서의 순수 함수
____인자가 없는 순수 함수
____하나 이상의 인자를 지닌 순수 함수
__순수 함수와 불변성
____불변성과 참조에 의한 전달
____불변성과 포인터
____불변성과 비클래스 함수
____불변성과 출력 파라미터
____정적 함수가 과연 정답일까?
____정적 함수의 대안
__순수 함수와 I/O
__요약
__질문
3장. 람다 파헤치기
__기술적 요구사항
__람다란 무엇인가?
__C++에서의 람다
____변수 캡처
____값에 의한 변수 캡처와 참조에 의한 변수 캡처
____다수 값 캡처
____포인터 값 캡처
__어떠한 캡처를 사용해야 할까?
____람다와 순수 함수
____람다 불변성과 값에 의한 인자 전달
____람다 불변성과 참조에 의한 인자 전달
____람다 불변성과 포인터 인자
____람다와 I/O
____람다 불변성과 값 캡처
______참조에 의해 캡처한 값의 불변성
______값에 의해 캡처한 포인터의 불변성
______참조에 의해 캡처한 포인터의 불변성
__람다와 클래스
____데이터 멤버를 람다로 활용하기
____정적 변수를 람다로 활용하기
____정적 함수를 람다로 변환하기
____람다와 커플링
__요약
__질문
4장. 함수형 합성 아이디어
__기술적 요구사항
__함수형 합성이란?
____함수형 합성
____C++에서의 함수형 합성 구현
____교환법칙이 성립하지 않는 함수형 합성
__복합적 함수 합성
____합성 함수 심층 구현
__
이 책에서 다루는 내용
◆ 함수형 프로그래밍의 기초
◆ 함수형 프로그래밍의 빌딩 블록의 이해를 통한 코드 구조화
◆ 함수형 프로그래밍과 객체지향 프로그래밍(OOP 간의 설계 방식 차이
◆ C++에서 새로운 함수를 생성하는 커링의 개념 활용법
◆ 함수형 방식으로 디자인 패턴을 구현하는 기술
◆ 함수형 프로그래밍을 활용한 멀티스레딩 개념
◆ 함수형 구조 활용 시 메모리 소모 개선법
이 책의 구성
1장, ‘함수형 프로그래밍 소개’에서는 함수형 프로그래밍의 기본적인 아이디어를 소개한다.
2장, ‘순수 함수 이해하기’에서는 함수형 프로그래밍의 기본적인 빌딩 블록과 불변성에 중점을 둔 함수와 C++에서 그것을 작성하는 방법을 가르쳐준다.
3장, ‘람다에 깊이 뛰어들기’에서는 람다와 C++에서 람다를 작성하는 방법에 초점을 맞춘다.
4장, ‘함수 합성 아이디어’에서는 고차원 연산자로 함수를 합성하는 방법을 살펴본다.
5장, ‘파셜 애플리케이션과 커링’에서는 2가지 함수의 기본 연산자인 파셜 애플리케이션과 커링을 C++에서 활용하는 방법을 가르쳐준다.
6장, ‘함수로 사고하기 - 데이터 입력에서 데이터 출력까지’에서는 함수 중심 설계를 적용해코드를 구성하는 다른 방식을 알려준다.
7장, ‘함수형 연산자로 중복 제거하기’에서는 반복 금지(DRY 원칙을 전체적으로 살펴본다. 중복 코드의 종류와 코드 유사성을 살펴보고 합성, 파셜 애플리케이션, 커링 같은 함수형 연산자를 활용해 코드를 더 DRY하게 작성하는 방법을 소개한다.
8장, ‘클래스를 활용한 코드 응집도 개선하기’에서는 함수를 클래스로 진화시키는 방법과 클래스를 함수로 변환하는 방법을 보여준다.
9장, ‘함수형 프로그래밍의 테스트 주도 개발’에서는 함수형 프로그래밍으로 테스트 주도 개발(TDD을 하는 방법과 불변성과 순수 함수로 테스트를 간결화하는 방법을 살펴본다.
10장, ‘퍼포먼스 최적화’에서는 메모이제이션, 꼬리 재귀 최적화, 병렬 수행을 포함한 함수 중심 설계 퍼포먼스를 최적화하