본문내용 바로가기
MD의선택 무료배송 이벤트 소득공제

스칼라로 배우는 함수형 프로그래밍 스칼라와 Java8 개발자를 위한 궁극의 함수형 프로그래밍 지침서

폴 키우사노 , 루나르 비아르드나손 지음 | 류광 옮김 | 제이펍 | 2015년 03월 16일 출간
클로버 리뷰쓰기

이 책의 다른 상품 정보

  • 정가 : 28,000원
    판매가 : 25,200 [10%↓ 2,800원 할인]
  • 통합포인트 :
    [기본적립] 1,400원 적립 [5% 적립] [추가적립] 5만원 이상 구매 시 2천원 추가적립 안내 [회원혜택] 실버등급 이상, 3만원 이상 구매 시 2~4% 추가적립 안내
  • 추가혜택 : 포인트 안내 도서소득공제 안내 추가혜택 더보기
  • 배송비 : 무료 배송비 안내
  • 배송일정 : 서울특별시 종로구 세종대로 기준 지역변경
    11월 30일 출고 예정 배송일정 안내
  • 바로드림 : 인터넷으로 주문하고 매장에서 직접 수령 안내 바로드림 혜택
    휴일에는 바로드림 픽업으로 더 빨리 받아 보세요. 바로드림 혜택받고 이용하기

이 책의 이벤트 해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.

  • 개발자로 입문하기: 일단 이것부터 읽어보자!
    2019.05.31 ~ 2020.12.31
  • 제이펍의 도서를 한 눈에 살펴보세요
    2017.11.23 ~ 2020.12.31
  • 책을 통해 성장해나가는 개발자를 응원합니다.
    2017.06.22 ~ 2025.07.31
  • MANNING, O'REILLY, PACKT, WILE..
    2016.03.07 ~ 2021.12.31
상품상세정보
ISBN 9791185890180(1185890181)
쪽수 424쪽
크기 188 * 245 * 20 mm /830g 판형알림
원서명/저자명 Functional Programming in Scala/Paul Chiusano, R?nar Bjarnason

책소개

이 책이 속한 분야

함수형 프로그래밍(functional programming)은 프로그램 상태에 의존하지 않는 함수들을 강조하는 소프트웨어 개발 스타일이다. [스칼라로 배우는 함수형 프로그래밍]은 함수형 프로그래밍을 배우고 일상적인 코딩 업무에 적용하고자 하는 프로그래머를 위한 일련의 튜토리얼로 구성되어 있다. 이 책은 논리적이고 간결하며 명확한 단계를 거쳐 기본 기법에서 고급 주제로 나아간다. 또한, 함수형 프로그래밍의 세계를 열어주는 구체적인 예제와 연습문제를 제공한다.

목차

제1부 함수형 프로그래밍 입문
1장 함수형 프로그래밍이란 무엇인가? 3
1.1 FP의 이점: 간단한 예제 하나 4
1.1.1 부수 효과가 있는 프로그램 4
1.1.2 함수적 해법: 부수 효과의 제거 7
1.2 (순수)함수란 구체적으로 무엇인가? 11
1.3 참조 투명성, 순수성, 그리고 치환 모형 12
1.4 요약 16

2장 스칼라로 함수형 프로그래밍 시작하기 17
2.1 스칼라 언어의 소개: 예제 하나 18
2.2 프로그램의 실행 21
2.3 모듈, 객체, 이름공간 23
2.4 고차 함수: 함수를 함수에 전달 25
2.4.1 잠깐 곁가지: 함수적으로 루프 작성하기 25
2.4.2 첫 번째 고차 함수 작성 27
2.5 다형적 함수: 형식에 대한 추상 29
2.5.1 다형적 함수의 예 29
2.5.2 익명 함수로 고차 함수 호출 31
2.6 형식에서 도출된 구현 32
2.7 요약 36

3장 함수적 자료구조 37
3.1 함수적 자료구조의 정의 37
3.2 패턴 부합 41
3.3 함수적 자료구조의 자료 공유 44
3.3.1 자료 공유의 효율성 46
3.3.2 고차 함수를 위한 형식 추론 개선 47
3.4 목록에 대한 재귀와 고차 함수로의 일반화 49
3.4.1 그 외의 목록 조작 함수들 52
3.4.2 단순 구성요소들로 목록 함수를 조립할 때의 효율성 손실 55
3.5 트리 56
3.6 요약 58

4장 예외를 이용하지 않은 오류 처리 59
4.1 예외의 장단점 60
4.2 예외의 가능한 대안들 62
4.3 Option 자료 형식 64
4.3.1 Option의 사용 패턴 65
4.3.2 예외 지향적 API의 Option 합성과 승급, 감싸기 70
4.4 Either 자료 형식 75
4.5 요약 78

5장 엄격성과 나태성 81
5.1 엄격한 함수와 엄격하지 않은 함수 83
5.2 확장 예제: 게으른 목록 86
5.2.1 스트림의 메모화를 통한 재계산 피하기 87
5.2.2 스트림의 조사를 위한 보조 함수들 88
5.3 프로그램 서술과 평가의 분리 89
5.4 무한 스트림과 공재귀 93
5.5 요약 98

6장 순수 함수적 상태 99
6.1 부수 효과를 이용한 난수 발생 99
6.2 순수 함수적 난수 발생 101
6.3 상태 있는 API를 순수하게 만들기 103
6.4 상태 동작을 위한 더 나은 API 106
6.4.1 상태 동작들의 조합 108
6.4.2 내포된 상태 동작 109
6.5 일반적 상태 동작 자료 형식 111
6.6 순수 함수적 명령식 프로그래밍 112
6.7 요약 115

제2부 함수적 설계와 조합기 라이브러리
7장 순수 함수적 병렬성 119
7.1 자료 형식과 함수의 선택 120
7.1.1 병렬 계산을 위한 자료 형식 하나 122
7.1.2 병렬 계산의 조합 125
7.1.3 명시적 분기 127
7.2 표현의 선택 130
7.3 API의 정련 132
7.4 API의 대수 138
7.4.1 map에 관한 법칙 139
7.4.2 fork에 관한 법칙 141
7.4.3 법칙 깨기: 미묘한 버그 하나 142
7.4.4 행위자를 이용한 완전 비차단 Par 구현 144
7.5 조합기들을 가장 일반적인 형태로 정련 151
7.6 요약 156

8장 속성 기반 검사 157
8.1 속성 기반 검사의 간략한 소개 157
8.2 자료 형식과 함수의 선택 161
8.2.1 API의 초기 버전 161
8.2.2 속성의 의미와 API 163
8.2.3 생성기의 의미와 API 165
8.2.4 생성된 값들에 의존하는 생성기 167
8.2.5 Prop 자료 형식의 정련 168
8.3 검례 최소화 171
8.4 라이브러리의 사용과 사용성 개선 173
8.4.1 간단한 예제 몇 가지 173
8.4.2 병렬 계산을 위한 검사 모음 작성 175
8.5 고차 함수의 검사와 향후 개선 방향 181
8.6 생성기의 법칙들 183
8.7 요약 184

9장 파서 조합기 라이브러리 187
9.1 대수의 설계: 첫 시도 188
9.2 가능한 대수 하나 195
9.2.1 슬라이싱과 비지 않은 되풀이 197
9.3 문맥 민감성의 처리 201
9.4 JSON 파서 작성 203
9.4.1 JSON 서식 204
9.4.2 JSON 파서 205
9.5 오류 보고 206
9.5.1 가능한 설계 하나 207
9.5.2 오류의 중첩 208
9.5.3 분기와 역추적의 제어 210
9.6 대수의 구현 212
9.6.1 가능한 구현 하나 214
9.6.2 파서들의 순차 실행 215
9.6.3 파서에 이름표 붙이기 216
9.6.4 실패의 극복과 역추적 217
9.6.5 문맥 민감 파싱 218
9.7 요약 221

제3부 함수적 설계의 공통 구조
10장 모노이드 225
10.1 모노이드란 무엇인가? 226
10.2 모노이드를 이용한 목록 접기 229
10.3 결합법칙과 병렬성 230
10.4 예제: 병렬 파싱 233
10.5 접을 수 있는 자료구조 235
10.6 모노이드 합성 237
10.6.1 좀 더 복잡한 모노이드 합성 237
10.6.2 모노이드 합성을 이용한 순회 융합 239
10.7 요약 240

11장 모나드 241
11.1 함수자: map 함수의 일반화 241
11.1.1 함수자의 법칙들 244
11.2 모나드: flatMap 함수와 unit 함수의 일반화 245
11.2.1 Monad 특질 246
11.3 모나드적 조합기 249
11.4 모나드 법칙 251
11.4.1 결합법칙 251
11.4.2 특정 모나드의 결합법칙 성립 증명 253
11.4.3 항등법칙 255
11.5 도대체 모나드란 무엇인가? 256
11.5.1 항등 모나드 258
11.5.2 State 모나드와 부분 형식 적용 259
11.6 요약 264

12장 적용성 함수자와 순회 가능 함수자 265
12.1 모나드의 일반화 265
12.2 Applicative 특질 266
12.3 모나드와 적용성 함수자의 차이 269
12.3.1 적용성 Option과 Option 모나드 269
12.3.2 적용성 Parser 대 Parser 모나드 271
12.4 적용성 함수의 장점 273
12.4.1 모든 적용성 함수자가 모나드는 아니다 273
12.5 적용성 함수자 법칙 277
12.5.1 왼쪽, 오른쪽 항등법칙 277
12.5.2 결합법칙 278
12.5.3 곱의 자연성 법칙 279
12.6 순회 가능 함수자 282
12.7 Traverse의 용도 284
12.7.1 모노이드에서 적용성 함수자로 285
12.7.2 상태 있는 순회 287
12.7.3 순회 가능 구조의 조합 289
12.7.4 순회의 융합 290
12.7.5 중첩된 순회 290
12.7.6 모나드 합성 291
12.8 요약 292

제4부 효과와 입출력
13장 외부 효과와 입출력 297
13.1 효과의 추출 298
13.2 간단한 입출력 형식 300
13.2.1 입력 효과의 처리 301
13.2.2 단순한 IO 형식의 장단점 306
13.3 StackOverflowError 방지 307
13.3.1 제어의 흐름을 자료 생성자로 구체화 308
13.3.2 트램펄린 적용: 스택 넘침에 대한 일반적 해법 311
13.4 좀 더 정교한 IO 형식 312
13.4.1 자유 모나드 314
13.4.2 콘솔 입출력만 지원하는 모나드 316
13.4.3 순수 해석기 319
13.5 비차단 비동기 입출력 321
13.6 범용 IO 형식 324
13.6.1 그 모든 것의 끝에 있는 주 프로그램 325
13.7 IO 형식이 스트림 방식 입출력에 충분하지 않은 이유 326
13.8 요약 328

14장 지역 효과와 변이 가능 상태 331
14.1 순수 함수적 변이 가능 상태 331
14.2 부수 효과를 지역 범위로 한정하는 자료 형식 334
14.2.1 범위 있는 변이를 위한 작은 언어 334
14.2.2 변이 가능 참조의 대수 336
14.2.3 변이 가능 상태 동작의 실행 338
14.2.4 변이 가능 배열 342
14.2.5 순수 함수적 제자리 quicksort 344
14.3 순수성은 문맥에 의존한다 345
14.3.1 부수 효과로 간주되는 것은 무엇인가? 347
14.4 요약 349

15장 스트림 처리와 점진적 입출력 351
15.1 명령식 입출력의 문제점을 보여주는 예제 하나 351
15.2 간단한 스트림 변환기 355
15.2.1 처리 공정의 생성 357
15.2.2 처리 공정의 합성과 추가 361
15.2.3 파일 처리 364
15.3 확장 가능한 처리 공정 형식 365
15.3.1 공급원 368
15.3.2 자원 안전성 보장 370
15.3.3 단일 입력 처리 공정 373
15.3.4 다중 입력 스트림 376
15.3.5 싱크 379
15.3.6 효과 있는 채널 381
15.3.7 동적 자원 할당 382
15.4 응용 384
15.5 요약 385

책 속으로

이 책에서 도구로 쓰이는 스칼라Scala 언어는 Java와의 상호운용성을 제공함으로써 그러한 진입 장벽을 낮추었다는 점에서 많은 주목을 받았습니다. 그러나 이 책의 초점은 함수형 프로그래밍 자체에 있으며, Java에 대한 지식은 별로 요구되지 않습니다. 이 책(원서)을 읽으면서 아주 마음에 들었던 점 하나는, 진입 장벽을 인위적으로 낮추려 하는 대신 독자가 진입 장벽을 직시하고 그것을 뛰어넘을 수 있는 능력과 통찰을 갖추도록 돕는 데 주력한다는 점입니다.
_‘옮긴이 머리말’ 중에서

경험 덕분에 우리는 우리가 쓰고자 하는 책이... 더보기

출판사 서평

“함수형 프로그래밍에 대한 접근방식이, 결국은 아름다운 코드와 계산의 본질에 대한 깊은 통찰로도 이어짐을 보여주는 책!”
_스칼라의 창시자 마틴 오더스키(Martin Odersky) 추천사 중에서

함수적 설계에 대한 영감을 불어넣는 완벽한 튜토리얼!
함수형 프로그래밍(functional programming)은 프로그램 상태에 의존하지 않는 함수들을 강조하는 소프트웨어 개발 스타일이다. 함수적 코드는 그렇지 않은 코드에 비해 검사와 재사용이 쉽고, 병렬화가 간단하며, 버그를 만들 여지도 적다. 스칼라는 함수형 프로그래밍을... 더보기

Klover 리뷰 (0)

북로그 리뷰 (0) 쓰러가기

도서 구매 후 리뷰를 작성하시면
결제 90일 이내 300원, 발송 후 5일 이내 400원, 이 상품의 첫 리뷰 500원의 포인트를 드립니다.

포인트는 작성 후 다음 날 적립되며, 도서 발송 전 작성 시에는 발송 후 익일에 적립됩니다.
북로그 리뷰는 본인인증을 거친 회원만 작성 가능합니다.
(※ 외서/eBook/음반/DVD/GIFT 및 잡지 상품 제외) 안내
  • 해당도서의 리뷰가 없습니다.

문장수집 (0) 문장수집 쓰기 나의 독서기록 보기
※구매도서의 문장수집을 기록하면 통합포인트 적립 안내

교환/반품/품절안내

※ 상품 설명에 반품/교환 관련한 안내가 있는 경우 그 내용을 우선으로 합니다. (업체 사정에 따라 달라질 수 있습니다.)

교환/반품/품절안내
반품/교환방법 마이룸 > 주문관리 > 주문/배송내역 > 주문조회 > 반품/교환신청 ,
[1:1상담>반품/교환/환불] 또는 고객센터 (1544-1900)

※ 오픈마켓, 해외배송주문, 기프트 주문시 [1:1상담>반품/교환/환불]
    또는 고객센터 (1544-1900)
반품/교환가능 기간 변심반품의 경우 수령 후 7일 이내,
상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내
반품/교환비용 변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담
반품/교환 불가 사유
  • 소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
    (단지 확인을 위한 포장 훼손은 제외)
  • 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
    예) 화장품, 식품, 가전제품(악세서리 포함) 등
  • 복제가 가능한 상품 등의 포장을 훼손한 경우
    예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집
  • 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우 ((1)해외주문도서)
  • 디지털 컨텐츠인 eBook, 오디오북 등을 1회 이상 다운로드를 받았을 경우
  • 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
  • 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에
    해당되는 경우
(1) 해외주문도서 : 이용자의 요청에 의한 개인주문상품으로 단순변심 및 착오로 인한 취소/교환/반품 시 ‘해외주문 반품/취소 수수료’ 고객 부담 (해외주문 반품/취소 수수료 : ①서양도서-판매정가의 12%, ②일본도서-판매정가의 7%를 적용)
상품 품절 공급사(출판사) 재고 사정에 의해 품절/지연될 수 있으며, 품절 시 관련 사항에 대해서는
이메일과 문자로 안내드리겠습니다.
소비자 피해보상
환불지연에 따른 배상
  • 상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은
    소비자분쟁해결 기준 (공정거래위원회 고시)에 준하여 처리됨
  • 대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의
    소비자 보호에 관한 법률에 따라 처리함

바로가기

  • 우측 확장형 배너 2
  • 우측 확장형 배너 2

최근 본 상품