간편결제, 신용카드 청구할인
인터파크 롯데카드 5% (23,940원)
(최대할인 10만원 / 전월실적 40만원)
북피니언 롯데카드 30% (17,640원)
(최대할인 3만원 / 3만원 이상 결제)
NH쇼핑&인터파크카드 20% (20,160원)
(최대할인 4만원 / 2만원 이상 결제)
Close

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

원제 : Functional Programming in Scala
소득공제

2013년 9월 9일 이후 누적수치입니다.

공유하기
정가

28,000원

  • 25,200 (10%할인)

    1,400P (5%적립)

할인혜택
적립혜택
  • S-Point 적립은 마이페이지에서 직접 구매확정하신 경우만 적립 됩니다.
추가혜택
  • 6/24(월) 이내 발송 예정  (서울시 강남구 삼성로 512)
  • 무료배송
  • 주문수량
    감소 증가
    • 이벤트/기획전

    • 연관도서

    • 상품권

    AD

    책소개

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

    출판사 서평

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

    함수적 설계에 대한 영감을 불어넣는 완벽한 튜토리얼!
    함수형 프로그래밍(functional programming)은 프로그램 상태에 의존하지 않는 함수들을 강조하는 소프트웨어 개발 스타일이다. 함수적 코드는 그렇지 않은 코드에 비해 검사와 재사용이 쉽고, 병렬화가 간단하며, 버그를 만들 여지도 적다. 스칼라는 함수형 프로그래밍을 잘 지원하는 신흥 JVM 언어이다. 스칼라는 Java 언어와 문법이 비슷하고 Java 코드와 투명하게 연동되기 때문에 함수형 프로그래밍을 처음 배우기에 아주 적합하다.

    이 책은 함수형 프로그래밍을 배우고 일상적인 코딩 업무에 적용하고자 하는 프로그래머를 위한 일련의 튜토리얼로 구성되어 있다. 이 책은 논리적이고 간결하며 명확한 단계를 거쳐 기본 기법에서 고급 주제로 나아간다. 또한, 함수형 프로그래밍의 세계를 열어주는 구체적인 예제와 연습문제를 제공한다.

    이 책의 주요 내용
    ■ 함수형 프로그래밍의 기본 개념과 응용 기법
    ■ 스칼라 문법 기초
    ■ 함수형 프로그래밍을 이용한 병렬 프로그램 작성
    ■ 독자의 이해 정도를 확인할 수 있는 연습문제들

    이 책은 함수형 프로그래밍을 전혀 모르는 독자도 읽을 수 있지만, 스칼라와 Java에 대한 사전 지식이 있다면 도움이 된다.

    추천사
    “스칼라와 Java 8 개발자를 위한 궁극의 함수형 프로그래밍 지침서!”
    - TekSystems의 윌리엄 E. 휠러

    “스칼라를 ‘더 나은 Java’ 이상의 것으로 끌어올리는 접근방식과 사고방식을 보여준다.”
    - 페르난도 도블라데스(Fernando Dobladez), Code54

    “코딩 연습문제는 의욕을 돋우고, 재미있으며, 실제 응용을 위한 정보도 제공한다.”
    - 크리스 노로스(Chris Nauroth), Hortonwrokd

    “그냥 읽는 것이 아니라 실습하면서 배운다.”
    - 더글러스 앨런(Douglas Alan), 하버드·MIT 엘리 & 에디스 L. 브로드 연구소

    목차

    제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에 대한 지식은 별로 요구되지 않습니다. 이 책(원서)을 읽으면서 아주 마음에 들었던 점 하나는, 진입 장벽을 인위적으로 낮추려 하는 대신 독자가 진입 장벽을 직시하고 그것을 뛰어넘을 수 있는 능력과 통찰을 갖추도록 돕는 데 주력한다는 점입니다.
    _‘옮긴이 머리말’ 중에서

    경험 덕분에 우리는 우리가 쓰고자 하는 책이 어떤 종류의 책인지 명확히 알고 있었다. 그리고 그런 책을 금세 수월하게 쓸 수 있으리라 생각했다. 그로부터 4년이 넘는 시간이 지난 지금, 우리는 괜찮은 책 한 권을 만들어 냈다고 생각한다. 이 책은 우리가 함수형 프로그래밍을 배울 때 “이런 책이 있었으면 좋겠다”라고 생각했던 바로 그 책이다.
    _‘머리말’ 중에서

    독자는 입출력을 수행하는 프로그램, 오류를 처리하는 프로그램, 자료를 수정하는 프로그램을 포함한 모든 종류의 프로그램을 부수 효과 없이 표현하는 방법을 배우게 된다. 또한, FP의 원리를 따르는 것이 대단히 이롭다는 점도 배우게 될 것이다. 이는 순수 함수들로 프로그램을 작성하면 모듈성(modularity)이 증가하기 때문이다. 모듈성 덕분에 순수 함수는 검사(test), 재사용, 병렬화, 일반화, 분석이 쉽다. 더 나아가서, 순수 함수는 버그가 생길 여지가 훨씬 적다.
    _4쪽

    이번 장에서는 병렬 및 비동기 계산의 생성을 위한 순수 함수적 라이브러리 하나를 구축한다. 병렬적 프로그램에 내재하는 복잡성을, 오직 순수 함수만으로 프로그램을 서술함으로써 통제해 볼 것이다. 이를 통해서 치환 모형을 이용해서 추론을 단순화할 수 있으며, 그러다 보면 바라건대 동시적 계산을 쉽고 즐겁게 다룰 수 있게 될 것이다.
    _119쪽

    실무의 관점에서 볼 때, API를 최소한의 기본 함수들로 줄이는 능력은 대단히 유용하다. parMap을 기존의 조합기들을 이용해서 구현할 때 언급했듯이, 기본적인 조합기들은 다소 까다로운 논리를 캡슐화하고 있는 경우가 많으며, 그런 것들을 재사용하면 까다로운 논리를 되풀이해서 다룰 필요가 없다.
    _155쪽

    저자소개

    폴 키우사노 [저] 신작알림 SMS신청
    생년월일 -

    해당작가에 대한 소개가 없습니다.

    류광 [역] 신작알림 SMS신청
    생년월일 -

    1996년부터 활동해 온 프로그래밍 서적 전문 번역가로, Game Programming Gems 시리즈와 컴퓨터 프로그래밍의 예술(The Art of Computer Programming) 제1~4A권, UNIX 고급 프로그래밍(Advanced Programming in UNIX Environment) 제2판과 제3판을 포함하여 60여 권의 다양한 프로그래밍 서적을 번역했다. C++ 관련 번역서로는 일반적 프로그래밍과 STL, C++ Template Metaprogramming, (C++로 배우는) 프로그래밍의 원리와 실제 등이 있다. 수학 관련 번역서로는 《구체 수학》, 《3D 게임 프로그래밍 & 컴퓨터 그래픽을 위한 수학》 제1판·제2판 등이 있고, 심층학습 관련

    펼쳐보기

    역자의 다른책

    전체보기
    펼쳐보기

    전공도서/대학교재 분야에서 많은 회원이 구매한 책

      리뷰

      10.0 (총 0건)

      100자평

      작성시 유의사항

      평점
      0/100자
      등록하기

      100자평

      10.0
      (총 0건)

      판매자정보

      • 인터파크도서에 등록된 오픈마켓 상품은 그 내용과 책임이 모두 판매자에게 있으며, 인터파크도서는 해당 상품과 내용에 대해 책임지지 않습니다.

      상호

      (주)교보문고

      대표자명

      안병현

      사업자등록번호

      102-81-11670

      연락처

      1544-1900

      전자우편주소

      callcenter@kyobobook.co.kr

      통신판매업신고번호

      01-0653

      영업소재지

      서울특별시 종로구 종로 1(종로1가,교보빌딩)

      교환/환불

      반품/교환 방법

      ‘마이페이지 > 취소/반품/교환/환불’ 에서 신청 또는 1:1 문의 게시판 및 고객센터(1577-2555)에서 신청 가능

      반품/교환가능 기간

      변심 반품의 경우 출고완료 후 6일(영업일 기준) 이내까지만 가능
      단, 상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내

      반품/교환 비용

      변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담
      상품이나 서비스 자체의 하자로 인한 교환/반품은 반송료 판매자 부담

      반품/교환 불가 사유

      ·소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
      (단지 확인을 위한 포장 훼손은 제외)

      ·소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
      예) 화장품, 식품, 가전제품(악세서리 포함) 등

      ·복제가 가능한 상품 등의 포장을 훼손한 경우
      예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집

      ·시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우

      ·전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에 해당되는 경우

      상품 품절

      공급사(출판사) 재고 사정에 의해 품절/지연될 수 있음

      소비자 피해보상
      환불지연에 따른 배상

      ·상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은 소비자분쟁해결 기준 (공정거래위원회 고시)에 준하여 처리됨

      ·대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의 소비자 보호에 관한 법률에 따라 처리함

      (주)KG이니시스 구매안전서비스서비스 가입사실 확인

      (주)인터파크커머스는 회원님들의 안전거래를 위해 구매금액, 결제수단에 상관없이 (주)인터파크커머스를 통한 모든 거래에 대하여
      (주)KG이니시스가 제공하는 구매안전서비스를 적용하고 있습니다.

      배송안내

      • 교보문고 상품은 택배로 배송되며, 출고완료 1~2일내 상품을 받아 보실 수 있습니다.

      • 출고가능 시간이 서로 다른 상품을 함께 주문할 경우 출고가능 시간이 가장 긴 상품을 기준으로 배송됩니다.

      • 군부대, 교도소 등 특정기관은 우체국 택배만 배송가능합니다.

      • 배송비는 업체 배송비 정책에 따릅니다.

      • - 도서 구매 시 15,000원 이상 무료배송, 15,000원 미만 2,500원 - 상품별 배송비가 있는 경우, 상품별 배송비 정책 적용