Description
함수형 프로그래밍의 기본 개념을 학습할 수 있으며, 소프트웨어 개발자가 함수형 프로그래밍을 객체지향 프로그래밍과 함께 사용하는 방법을 배울 수 있다. 저자는 자바, 파이썬, C#, Scala, 자바스크립트 등 다양한 프로그래밍 언어로 작성한 예제를 통해 복잡한 소프트웨어 프로젝트에서 함수형과 객체지향 프로그래밍의 조화를 이끌어내는 방법을 알려준다. 또한 함수적인 접근법을 통해 간결하고 수정이 용이하며 일관된 코드를 작성하는 방법과, 함수형 프로그래밍과 객체지향 프로그래밍의 차이를 이해하면서 두 스타일을 소프트웨어 프로젝트에 통합시키는 방법을 배울 수 있다. 독자는 이 책의 내용을 바탕으로 함수형 프로그래밍을 실무에 적용할 수 있을 것이다.
저자

잭 위드먼

(Jack Widman)
학계에서 수학자로 커리어를 시작했다. 미적분학 및 이산 수학 과정을 가르치면서 의사 콤팩트(pseudo-compact) 위상군(topological group)의 복잡한 수학 이론을 연구하고 지도했다. 그러던 중 친구의 제안으로 프로그래밍을 접하고 적성에 맞는지 알아보기로 결심했다. 그로부터 24년이 지난 지금, 꾸준히 코드를 설계하고 작성하고 있다. 수학 박사 학위와 24년간의 소프트웨어 산업군의 경력을 바탕으로 수학적 뿌리가 깊은 함수형 프로그래밍에 관한 책을 집필하자는 아이디어를 떠올렸고, 이 책을 완성했다. 여가 시간에는 사이버 보안에 관한 다양한 글을 읽고, 쓰고, 배우는 것을 즐긴다.

목차

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 언어
____닷넷 언어
____타입 클래스
__결론


부록. 스칼라

출판사 서평

◈ 이 책에서 다루는 내용 ◈

◆ 함수형 프로그래밍 기본 개념을 배우고 함수형 프로그래머가 문제에 접근하는 방식을 탐구한다.
◆ 함수형 프로그래밍이 객체 지향 프로그래밍과 명령형 프로그래밍이 어떻게 다른지 이해할 수 있다.
◆ 함수적인 방식으로 현실을 모델링하는 실용적이고 적용 가능한 디자인 패턴 세트를 사용할 수 있다.
◆ 함수형 프로그래밍 및 객체지향 프로그래밍 기능을 소프트웨어 프로젝트에 통합하는 방법을 학습할 수 있다.
◆ 함수형 디자인 패턴을 적절하게 적용하고, 정확하고 견고한 동시에 쉽게 수정할 수 있는 코드를 작성할 수 있다.

◈ 이 책의 대상 독자 ◈

모든 프로그래머를 대상으로 한 책이다. 함수형 프로그래밍에 대한 경험은 없지만 들어본 적이 있고, 궁금한 점이 많거나 지식이 전혀 없는 상태에서 서점에서 이 책을 구매한 경우에도 유용할 것이다. 숙달된 함수형 프로그래머 또한 도움이 될 만한 내용을 찾을 수 있을 것이다.
다른 책에서는 다루지 않는 방식으로 함수형 프로그래밍의 범주론의 근간을 심층적으로 설명한다. 마지막으로 활용 경험이 어느 정도 있지만 함수형 프로그래밍을 구성하는 개념과 이론을 더 깊이 이해하고 싶은 프로그래머는 이 책을 통해 많은 것을 배우고 즐길 수 있을 것이다.