Table of Contents

옮긴이 머리말 xvii 베타리더 후기 xix 추천사 xxi 머리말 xxvi 감사의 글 xxviii 이 책에 대하여 xxx CHAPTER 1 쏙쏙 들어오는 함수형 코딩에 오신 것을 환영합니다 1 함수형 프로그래밍은 무엇인가요? 2 실용적인 측면에서 함수형 프로그래밍 정의의 문제점 3 함수형 프로그래밍 정의가 혼란스러운 관리자 4 함수형 프로그래밍을 학문적 지식이 아닌 기술과 개념으로 보기 5 액션과 계산, 데이터 구분하기 6 함수형 프로그래머는 부를 때 조심해야 하는 코드를 구분합니다 7 함수형 프로그래머는 실행하는 코드와 그렇지 않은 코드를 구분합니다 8 함수형 프로그래머는 액션과 계산, 데이터를 구분합니다 9 함수형 프로그래밍에서는 코드를 세 가지로 분류합니다 10 액션, 계산, 데이터를 구분하면 어떤 장점이 있나요? 11 다른 함수형 프로그래밍 책과 다른 점 12 함수형 사고가 무엇인가요? 13 이 책을 읽는 기본 규칙 14 결론 16 CHAPTER 2 현실에서의 함수형 사고 17 토니 피자에 오신 것을 환영합니다 18 파트 I: 액션과 계산, 데이터 19 변경 가능성에 따라 코드 나누기 20 파트 II: 일급 추상 21 분산 시스템을 타임라인으로 시각화하기 22 각각의 타임라인은 다른 순서로 실행됩니다 23 어려운 경험을 통해 분산 시스템에 대해 배운 것 24 타임라인 커팅: 로봇이 서로를 기다릴 수 있게 하기 25 좋은 경험을 통해 타임라인에 대해 배운 것 26 결론 27 PART I 액션과 계산, 데이터 CHAPTER 3 액션과 계산, 데이터의 차이를 알기 31 액션과 계산, 데이터 32 액션과 계산, 데이터는 어디에나 적용할 수 있습니다 33 장보기 과정에서 배운 것 36 새로 만드는 코드에 함수형 사고 적용하기 39 쿠폰 보내는 과정을 그려보기 42 쿠폰 보내는 과정 구현하기 47 이미 있는 코드에 함수형 사고 적용하기 54 액션은 코드 전체로 퍼집니다 56 액션은 다양한 형태로 나타납니다 57 결론 59 CHAPTER 4 액션에서 계산 빼내기 61 MegaMart.com에 오신 것을 환영합니다 62 무료 배송비 계산하기 63 세금 계산하기 64 테스트하기 쉽게 만들기 65 재사용하기 쉽게 만들기 66 액션과 계산, 데이터를 구분하기 67 함수에는 입력과 출력이 있습니다 68 테스트와 재사용성은 입출력과 관련 있습니다 69 액션에서 계산 빼내기 70 액션에서 또 다른 계산 빼내기 73 전체 코드를 봅시다 85 결론 86 CHAPTER 5 더 좋은 액션 만들기 87 비즈니스 요구 사항과 설계를 맞추기 88 비즈니스 요구 사항과 함수를 맞추기 89 원칙: 암묵적 입력과 출력은 적을수록 좋습니다 91 암묵적 입력과 출력 줄이기 92 코드 다시 살펴보기 95 계산 분류하기 97 원칙: 설계는 엉켜있는 코드를 푸는 것이다 98 add_item()을 분리해 더 좋은 설계 만들기 99 카피-온-라이트 패턴을 빼내기 100 add_item() 사용하기 101 계산을 분류하기 102 작은 함수와 많은 계산 106 결론 107 CHAPTER 6 변경 가능한 데이터 구조를 가진 언어에서 불변성 유지하기 109 모든 동작을 불변형으로 만들 수 있나요? 110 동작을 읽기, 쓰기 또는 둘 다로 분류하기 111 카피-온-라이트 원칙 세 단계 112 카피-온-라이트로 쓰기를 읽기로 바꾸기 113 원래 버전과 카피-온-라이트 버전의 차이 보기 117 앞에서 만든 카피-온-라이트 동작은 일반적입니다 118 자바스크립트 배열 훑어보기 119 쓰기를 하면서 읽기도 하는 동작은 어떻게 해야 할까요? 122 쓰면서 읽기도 하는 함수를 분리하기 123 값을 두 개 리턴하는 함수로 만들기 124 불변 데이터 구조를 읽는 것은 계산입니다 131 애플리케이션에는 시간에 따라 변하는 상태가 있습니다 132 불변 데이터 구조는 충분히 빠릅니다 133 객체에 대한 카피-온-라이트 134 자바스크립트 객체 훑어보기 135 중첩된 쓰기를 읽기로 바꾸기 140 어떤 복사본이 생겼을까요? 141 얕은 복사와 구조적 공유를 그림으로 알아보기 142 결론 145 CHAPTER 7 신뢰할 수 없는 코드를 쓰면서 불변성 지키기 147 레거시 코드와 불변성 148 우리가 만든 카피-온-라이트 코드는 신뢰할 수 없는 코드와 상호작용해야 합니다 149 방어적 복사는 원본이 바뀌는 것을 막아 줍니다 150 방어적 복사 구현하기 151 방어적 복사 규칙 152 신뢰할 수 없는 코드 감싸기 153 방어적 복사가 익숙할 수도 있습니다 156 카피-온-라이트와 방어적 복사를 비교해 봅시다 158 깊은 복사는 얕은 복사보다 비쌉니다 159 자바스크립트에서 깊은 복사를 구현하는 것은 어렵습니다 160 카피-온-라이트와 방어적 복사의 대화 162 결론 165 CH