지연평가에 대해서 자세하게 알아보자. 지연평가라는 것은 게으른 평가라고도 하지만 영리하다라는 말이다.
게으르기만 하는 것이 아니라 최대한 게으르게 가장 영리하게 표현하는 것이라고 볼 수 있다.
가장 필요할 때까지 평가를 미루다가 정말 필요할 때 해당하는 코드들을 평가하면서 값들을 만들어 나가는 기법이다.
앞에서 range함수를 봤던것처럼 배열을 미리 큰 크기로 만드는 것이 아니라, 그 이후에 필요한 연산이었던 reduce를 하면서 모두 add를 한다고 하면 필요한 a값과 b값 뽑을 때 만 실제로 배열의 안쪽에 있는 값들을 만들어 내면서 값을 만드는 것을 최소화하고 연산을 조금 효율적으로 줄이는 아이디어라고 볼 수 있다.
자바스크립트에서 보여주는 것처럼 이터레이터와 제너레이터, 이터러블을 기반으로 한 프로토콜이 있어서 지연평가나 코드의 평가를 미루는 즉 코드를 값으로 다루는 프로그래밍을 할 때 공식적인 스크립트의 일반값으로써 이러한 것들을 구현할 수 있게 되었다.
서로 다른 많은 라이브러리나 많은 함수들이 가장 안전한 조합성이나 합성성등을 가져갈 수 있다.
이제 제너레이터 기반으로 이터러블 중심 프로그래밍에서의 지연평가를 구현해 나가도록 할 것이다. 이터러블 중심 프로그래밍, 리스트 중심 프로그래밍 혹은 컬랙션 중심 프로그래밍이라고 불리는 프로그래밍 기법은 map filter reduce take 같은 함수들을 기반으로 프로그래밍 하는 것을 말한다.
자바스크립트에서는 이터러블 중심 프로그래밍을 할 때 어떻게 지연성을 구현할 수 있고 어떻게 지연성에 대해서 보다 공식적인 값으로써 조합성을 만들어 갈 수 있는지 하나씩 살펴보자
<출처 : 유인동 함수형 프로그래밍과 JavaScript ES6+>
https://www.inflearn.com/course/functional-es6/dashboard
함수형 프로그래밍과 JavaScript ES6+ - 인프런 | 강의
ES6+와 함수형 프로그래밍을 배울 수 있는 강의입니다. 이 강좌에서는 ES6+의 이터러블/이터레이터/제너레이터 프로토콜을 상세히 다루고 응용합니다. 이터러블을 기반으로한 함수형 프로그래밍,
www.inflearn.com
'JavaScript > 함수형 프로그래밍과 JavaScript ES6+' 카테고리의 다른 글
range, map, filter, take, reduce 중첩 사용(개발자도구로 순서확인) (0) | 2021.08.20 |
---|---|
L.map & L.filter (0) | 2021.08.20 |
take 함수 (0) | 2021.08.20 |
range와 느긋한 L.range 테스트 (0) | 2021.08.20 |
range와 느긋한 range(지연성ⅰ) (0) | 2021.08.20 |