책 소개
요약
함수형 프로그래밍의 기본 개념을 학습할 수 있으며, 소프트웨어 개발자가 함수형 프로그래밍을 객체지향 프로그래밍과 함께 사용하는 방법을 배울 수 있다. 저자는 자바, 파이썬, C#, Scala, 자바스크립트 등 다양한 프로그래밍 언어로 작성한 예제를 통해 복잡한 소프트웨어 프로젝트에서 함수형과 객체지향 프로그래밍의 조화를 이끌어내는 방법을 알려준다. 또한 함수적인 접근법을 통해 간결하고 수정이 용이하며 일관된 코드를 작성하는 방법과, 함수형 프로그래밍과 객체지향 프로그래밍의 차이를 이해하면서 두 스타일을 소프트웨어 프로젝트에 통합시키는 방법을 배울 수 있다. 독자는 이 책의 내용을 바탕으로 함수형 프로그래밍을 실무에 적용할 수 있을 것이다.
이 책에서 다루는 내용
◆ 함수형 프로그래밍 기본 개념을 배우고 함수형 프로그래머가 문제에 접근하는 방식을 탐구한다.
◆ 함수형 프로그래밍이 객체 지향 프로그래밍과 명령형 프로그래밍이 어떻게 다른지 이해할 수 있다.
◆ 함수적인 방식으로 현실을 모델링하는 실용적이고 적용 가능한 디자인 패턴 세트를 사용할 수 있다.
◆ 함수형 프로그래밍 및 객체지향 프로그래밍 기능을 소프트웨어 프로젝트에 통합하는 방법을 학습할 수 있다.
◆ 함수형 디자인 패턴을 적절하게 적용하고, 정확하고 견고한 동시에 쉽게 수정할 수 있는 코드를 작성할 수 있다.
이 책의 대상 독자
기본적으로 모든 프로그래머를 대상으로 한 책이다. 함수형 프로그래밍에 대한 경험은 없지만 들어본 적이 있고, 궁금한 점이 많거나 지식이 전혀 없는 상태에서 서점에서 이 책을 구매한 경우에도 유용할 것이다. 숙달된 함수형 프로그래밍 프로그래머 또한 도움이 될 만한 내용을 찾을 수 있을 것이다.
함수형 프로그래밍에 관해 다른 책에서는 다루지 않는 방식으로 함수형 프로그래밍의 범주론의 근간을 심층적으로 설명한다. 마지막으로 활용 경험이 어느 정도 있지만 함수형 프로그래밍을 구성하는 개념과 이론을 더 깊이 이해하고 싶은 프로그래머는 이 책을 통해 많은 것을 배우고 즐길 수 있을 것이다.
목차
목차
- 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 언어
- 닷넷 언어
- 타입 클래스
- 결론
- 순수한 방식 채택하기
- 부록. 스칼라