책소개
객체지향 언어에 길든 개발자들에게 예제를 통해 함수형으로 ‘생각’하는 법을 깨닫게 해주는 책. 스칼라 같은 함수형 언어의 수요가 늘고 있지만 자바 같은 객체지향에 익숙한 개발자들은 함수형 패러다임으로 넘어가는 데 어려움을 겪고 있다. 단순히 새 언어 문법을 익히는 것이 아니라 사고방식 자체를 바꿔야 하기 때문이다. 이 책은 자바 8, 스칼라, 클로저, 그루비 예제를 통해 객체지향 개발자가 함수형으로 사고를 전환하고 시야를 넓히는 일을 돕는다. 익숙한 사고방식을 바꾸려 노력하는 자바 개발자에게 소중한 디딤돌이 될 것이다.
목차
CHAPTER 1 왜
1.1 패러다임 전환
1.2 언어 트렌드에 발맞추기
1.3 언어/런타임에 제어를 양도하기
1.4 간결함
CHAPTER 2 전환
2.1 일반적인 예제
2.1.1 명령형 처리
2.1.2 함수형 처리
2.2 사례 연구: 자연수의 분류
2.2.1 명령형 자연수 분류
2.2.2 조금 더 함수적인 자연수 분류기
2.2.3 자바 8을 사용한 자연수 분류기
2.2.4 함수형 자바를 사용한 자연수 분류기
2.3 공통된 빌딩블록
2.3.1 필터
2.3.2 맵
2.3.3 폴드/리듀스
2.4 골치 아프게 비슷비슷한 이름들
2.4.1 필터
2.4.2 맵
2.4.3 폴드/리듀스
CHAPTER 3 양도하라
3.1 반복 처리에서 고계함수로
3.2 클로저
3.3 커링과 부분 적용
3.3.1 정의와 차이점
3.3.2 재귀
3.4 스트림과 작업 재정렬
CHAPTER 4 열심히보다는 현명하게
4.1 메모이제이션
4.1.1 캐싱
4.1.2 메모이제이션의 첨가
4.2 게으름
4.2.1 자바의 게으른 반복자
4.2.2 토털리 레이지 자연수 분류기
4.2.3 그루비의 게으른 목록
4.2.4 게으른 목록 만들기
4.2.5 게으름의 이점
4.2.6 게으른 필드 초기화
CHAPTER 5 진화하라
5.1 적은 수의 자료구조, 많은 연산자
5.2 문제를 향하여 언어를 구부리기
5.3 디스패치 다시 생각하기
5.3.1 그루비로 디스패치 개선하기
5.3.2 클로저 언어 구부리기
5.3.3 클로저의 멀티메서드와 맞춤식 다형성
5.4 연산자 오버로딩
5.4.1 그루비
5.4.2 스칼라
5.5 함수형 자료구조
5.5.1 함수형 오류 처리
5.5.2 Either 클래스
5.5.3 옵션 클래스
5.5.4 Either 트리와 패턴 매칭
CHAPTER 6 전진하라
6.1 함수형 언어의 디자인 패턴
6.2 함수 수준의 재사용
6.2.1 템플릿 메서드
6.2.2 전략
6.2.3 플라이웨이트 디자인 패턴과 메모이제이션
6.2.4 팩토리와 커링
6.3 구조형 재사용과 함수형 재사용
6.3.1 구조물을 사용한 코드 재사용
CHAPTER 7 실용적 사고
7.1 자바 8
7.1.1 함수형 인터페이스
7.1.2 옵셔널
7.1.3 자바 8 스트림
7.2 함수형 인프라스트럭처
7.2.1 아키텍처
7.2.2 웹 프레임워크
7.2.3 데이터베이스
CHAPTER 8 폴리글랏과 폴리패러다임
8.1 함수형과 메타프로그래밍의 결합
8.2 메타프로그래밍을 통한 자료형의 매핑
8.2.1 함수형 자바와 그루비를 사용한 무한 스트림
8.3 멀티패러다임 언어의 결과
8.4 문맥 대 구성
8.5 함수형 피라미드