함수형 프로그래밍 방법론
최신 Javascript 프로토콜들의 의미와 사용법
동시성, 지연성, 함수 합성.. 등 고급 프로그래밍 기법들
비동기, 에러 핸들링 방법론
섹션 0. 함수형 자바스크립트 기본기 (4강 ∙ 11분)
- 평가와 일급 (03:00)
- 일급 함수 (02:00)
- 고차 함수 (06:00)
섹션 1. ES6에서의 순회와 이터러블:이터레이터 프로토콜 (4강 ∙ 31분)
- 기존과 달라진 ES6에서의 리스트 순회 (03:00)
- Array, Set, Map을 통해 알아보는 이터러블/이터레이터 프로토콜 (16:00)
- 사용자 정의 이터러블, 이터러블/이터레이터 프로토콜 정의 (10:00)
- 전개 연산자 (02:00)
섹션 2. 제너레이터와 이터레이터 (3강 ∙ 13분)
- 제너레이터와 이터레이터 (04:00)
- odds (07:00)
- for...of, 전개 연산자, 구조 분해, 나머지 연산자 (02:00)
섹션 3. map, filter, reduce (7강 ∙ 37분)
- map (06:00)
- 이터러블 프로토콜을 따른 map의 다형성 1 (06:00)
- 이터러블 프로토콜을 따른 map의 다형성 2 (03:00)
- filter (05:00)
- reduce (07:00)
- reduce2 (02:00)
- map+filter+reduce 중첩 사용과 함수형 사고 (08:00)
섹션 4. 코드를 값으로 다루어 표현력 높이기 (5강 ∙ 21분)
- go (05:00)
- pipe (04:00)
- go를 사용하여 읽기 좋은 코드로 만들기 (02:00)
- go+curry를 사용하여 더 읽기 좋은 코드로 만들기 (07:00)
- 함수 조합으로 함수 만들기 (03:00)
섹션 5. 장바구니 예제 (2강 ∙ 20분)
- 총 수량, 총 가격 (09:00)
- HTML로 출력하기 (11:00)
섹션 6. 지연성 1 (11강 ∙ 1시간 11분)
- range와 느긋한 L.range (13:00)
- range와 느긋한 L.range 테스트 (02:00)
- take (06:00)
- 제너레이터/이터레이터 프로토콜로 구현하는 지연 평가 (04:00)
- L.map (04:00)
- L. filter (02:00)
- range, map, filter, take, reduce 중첩 사용 (16:00)
- L.range, L.map, L.filter, take 의 평가 순서 (14:00)
- 엄격한 계산과 느긋한 계산의 효율성 비교 (05:00)
- map, filter 계열 함수들이 가지는 결합 법칙 (03:00)
- ES6의 기본 규악을 통해 구현하는 지연 평가의 장점 (02:00)
섹션 7. 지연성 2 (10강 ∙ 1시간 6분)
- 결과를 만드는 함수 reduce, take (03:00)
- queryStr 함수 만들기 (04:00)
- Array.prototype.join 보다 다형성이 높은 join 함수 (08:00)
- take, find (08:00)
- L.map, L.filter로 map과 filter 만들기 (06:00)
- L.flatten, flatten (06:00)
- yield *, L.deepFlat
- L.flatMap, flatMap (12:00)
- 2차원 배열 다루기 (06:00)
- 이터러블 중심 프로그래밍 실무적인 코드 (13:00)
섹션 8. 비동기:동시성 프로그래밍 1 (7강 ∙ 1시간 9분)
- callback과 Promise (07:00)
- 비동기를 값으로 만드는 Promise (06:00)
- 값으로서의 Promise 활용 (08:00)
- 합성 관점에서의 Promise와 모나드 (16:00)
- Kleisli Composition 관점에서의 Promise (16:00)
- go, pipe, reduce에서 비동기 제어 (13:00)
- promise.then의 중요한 규칙 (03:00)
섹션 9. 비동기:동시성 프로그래밍 2 (10강 ∙ 1시간 26분)
- 지연 평가 + Promise - L.map, map, take (12:00)
- Kleisli Composition - L.filter, filter, nop, take (16:00)
- reduce에서 nop 지원 (09:00)
- 지연 평가 + Promise의 효율성 (03:00)
- 지연된 함수열을 병렬적으로 평가하기 - C.reduce, C.take [1] (11:00)
- 지연된 함수열을 병렬적으로 평가하기 - C.reduce, C.take [2] (14:00)
- 즉시 병렬적으로 평가하기 - C.map, C.filter (03:00)
- 즉시, 지연, Promise, 병렬적 조합하기 (08:00)
- 코드 간단히 정리 (03:00)
- Node.js에서 SQL 병렬 평가로 얻은 효율 (07:00)
섹션 10. 비동기:동시성 프로그래밍 3 (8강 ∙ 1시간 2분)
- async:await (11:00)
- [QnA] Array.prototype.map이 있는데 왜 FxJS의 map 함수가 필요한지? (11:00)
- [QnA] 이제 비동기는 async:await로 제어할 수 있는데 왜 파이프라인이 필요한지? (20:00)
- [QnA] async:await와 파이프라인을 같이 사용하기도 하는지? (02:00)
- [QnA] 동기 상황에서 에러 핸들링은 어떻게 해야하는지? (05:00)
- [QnA] 비동기 상황에서 에러 핸들링은 어떻게 해야하는지? (04:00)
- [QnA] 동기/비동기 에러 핸들링에서의 파이프라인의 이점은? (09:00)
- 마무리하며