함수형 프로그래밍과 ES6+ 예제 코드
강의 목록
- 함수형 자바스크립트 기본기
- 평가와 일급
- 일급 함수
- 고차 함수
- 부수효과와 순수 함수
- ES6에서의 순회와 이터러블/이터레이터 프로토콜
- 기존과 달라진 ES6에서의 리스트 순회
- Array, Set, Map을 통해 알아보는 이터러블/이터레이터 프로토콜
- 사용자 정의 이터러블
- 전개 연산자
- 제너레이터와 이터레이터
- 제너레이터와 이터레이터
- odds
- for...of, 전개 연산자, 구조 분해, 나머지 연산자
- map, filter, reduce
- map
- 이터러블 프로토콜을 따른 map의 다형성 1
- 이터러블 프로토콜을 따른 map의 다형성 2
- filter
- reduce
- reduce 2
- map+filter+reduce 중첩 사용과 함수형 사고
- 코드를 값으로 다루어 표현력 높이기
- go
- pipe
- go를 사용하여 읽기 좋은 코드로 만들기
- go+curry를 사용하여 더 읽기 좋은 코드로 만들기
- 함수 조합으로 함수 만들기
- 장바구니 예제
- 총 수량, 총 가격
- HTML로 출력하기
- 지연성 1
- range와 느긋한 L.range
- range와 느긋한 L.range 테스트
- take
- 제너레이터/이터레이터 프로토콜로 구현하는 지연 평가
- L.map
- L. filter
- range, map, filter, take, reduce 중첩 사용
- L.range, L.map, L.filter, take 의 평가 순서
- 엄격한 계산과 느긋한 계산의 효율성 비교
- map, filter 계열 함수들이 가지는 결합 법칙
- ES6의 기본 규악을 통해 구현하는 지연 평가의 장점
- 지연성 2
- 결과를 만드는 함수 reduce, take
- queryStr 함수 만들기
- Array.prototype.join 보다 다형성이 높은 join 함수
- take, find
- L.map, L.filter로 map과 filter 만들기
- L.flatten, flatten
- L.flatMap, flatMap
- 2차원 배열 다루기
- 지연성 / 이터러블 중심 프로그래밍 실무적인 코드
- 비동기/동시성 프로그래밍 1
- callback과 Promise
- 비동기를 값으로 만드는 Promise
- 값으로서의 Promise 활용
- 합성 관점에서의 Promise와 모나드
- Kleisli Composition 관점에서의 Promise
- go, pipe, reduce에서 비동기 제어
- promise.then의 중요한 규칙
- 비동기/동시성 프로그래밍 2
- 지연 평가 + Promise - L.map, map, take
- Kleisli Composition - L.filter, filter, nop, take
- reduce에서 nop 지원
- 지연 평가 + Promise의 효율성
- 지연된 함수열을 병렬적으로 평가하기 - C.reduce, C.take 1
- 지연된 함수열을 병렬적으로 평가하기 - C.reduce, C.take 2
- 즉시 병렬적으로 평가하기 - C.map, C.filter
- 즉시, 지연, Promise, 병렬적 조합하기
- 코드 간단히 정리
- Node.js에서 SQL 병렬 평가로 얻은 효율
- 비동기/동시성 프로그래밍 3
- async/await
- Q&A) Array.prototype.map이 있는데 왜 FxJS의 map 함수가 필요한지?
- Q&A) 이제 비동기는 async/await로 제어할 수 있는데 왜 파이프라인이 필요한지?
- Q&A) async/await와 파이프라인을 같이 사용하기도 하는지?
- Q&A) 동기 상황에서 에러 핸들링은 어떻게 해야하는지?
- Q&A) 비동기 상황에서 에러 핸들링은 어떻게 해야하는지?
- Q&A) 동기/비동기 에러 핸들링에서의 파이프라인의 이점은?