1장. 함수형 프로그래밍 소개
__불변성
__참조 투명성
__고차 함수
__지연 평가
__함수형 프로그래머처럼 생각하기
__FP의 장점
____FP를 통한 생산성 향상
____FP는 재미있다
____스칼라
__결론
2장. 기초 수학
__집합론
____함수
____함수의 종류
__컴퓨터 과학 기초
____익명 함수
____일급 객체로서의 함수
__결론
3장. 범주론과 패턴
__패턴 기반 범주론
____간략한 역사
____대상과 사상
____범주의 예
____Scal 범주
____펑터
____펑터의 프로그래밍 언어 표현
__패턴
____펑터 패턴
____모노이드
____자연 변환
____모나드
__결론
4장. 함수형 자료 구조
__Option 자료 구조
__Try 자료 구조
__Either 자료 구조
__고차 함수
__Scala의 for 컴프리헨션을 위한 모나드
__기존 자료 구조
____불변성과 기록
____지연
__결론
5장. 불변성 자세히 알아보기
__가변과 불변 변수
__재귀
____연결 리스트의 예
__꼬리 재귀
__스칼라 fold의 강력한 기능과 관련된 예
__fold와 Monoid 사이의 연관성
__고차 함수에 대한 추가 정보
____map에서 flatMap으로
__결론
6장. 동시성에 대한 질문
__스트림
__Akka 스트림
____소스
____Flow
____Sink
__스트림 더 알아보기
__FS2
__결론
7장. 어디로 가야 하는가?
__순수한 방식 채택하기
____IO 모나드
____중간 노선 선택
____JVM 언어
____닷넷 언어
____타입 클래스
__결론
부록. 스칼라
이 책에서 다루는 내용
함수형 프로그래밍 기본 개념을 배우고 함수형 프로그래머가 문제에 접근하는 방식을 탐구한다.
함수형 프로그래밍이 객체 지향 프로그래밍과 명령형 프로그래밍이 어떻게 다른지 이해할 수 있다.
함수적인 방식으로 현실을 모델링하는 실용적이고 적용 가능한 디자인 패턴 세트를 사용할 수 있다.
함수형 프로그래밍 및 객체지향 프로그래밍 기능을 소프트웨어 프로젝트에 통합하는 방법을 학습할 수 있다.
함수형 디자인 패턴을 적절하게 적용하고, 정확하고 견고한 동시에 쉽게 수정할 수 있는 코드를 작성할 수 있다.
이 책의 대상 독자
기본적으로 모든 프로그래머를 대상으로 한 책이다. 함수형 프로그래밍에 대한 경험은 없지만 들어본 적이 있고, 궁금한 점이 많거나 지식이 전혀 없는 상태에서 서점에서 이 책을 구매한 경우에도 유용할 것이다. 숙달된 함수형 프로그래밍 프로그래머 또한 도움이 될 만한 내용을 찾을 수 있을 것이다.
함수형 프로그래밍에 관해 다른 책에서는 다루지 않는 방식으로 함수형 프로그래밍의 범주론의 근간을 심층적으로 설명한다. 마지막으로 활용 경험이 어느 정도 있지만 함수형 프로그래밍을 구성하는 개념과 이론을 더 깊이 이해하고 싶은 프로그래머는 이 책을 통해 많은 것을 배우고 즐길 수 있을 것이다.
옮긴이의 말
최근 스칼라, 코틀린, 타입스크립트, 하스켈 등 다양한 함수형 프로그래밍 언어가 소프트웨어 개발에 활용되고 있다. 이러한 인기의 비결은 함수형 프로그래밍만이 갖고 있는 여러 특징 때문이다. 많은 프로그래밍 언어가 개발의 편의성을 이유로 동적 타입 시스템을 적용한 프로그래밍 언어를 사용하고 있다. 그러나 이는 유지 보수를 어렵게 만들며 예기치 못한 오류를 발생시킨다. 반면, 함수형 프로그래밍은 부수 효과(side effect가 없기 때문에 테스팅과 디버깅에 용이하다는 장점이 있다. 정적 타입 시스템을 채택한 함수형 프로그래밍은 이러한 장점을 극대화시킬 수 있다. 하지만 함수형 프로그래밍은 반