JavaScript/함수형 프로그래밍과 JavaScript ES6+

제너레이터 / 이터레이터 프로토콜로 구현하는 지연 평가

느리지만 꾸준하게 2021. 8. 20. 15:01

지연평가에 대해서 자세하게 알아보자. 지연평가라는 것은 게으른 평가라고도 하지만 영리하다라는 말이다.

게으르기만 하는 것이 아니라 최대한 게으르게 가장 영리하게 표현하는 것이라고 볼 수 있다.

 

가장 필요할 때까지 평가를 미루다가 정말 필요할 때 해당하는 코드들을 평가하면서 값들을 만들어 나가는 기법이다.

 

앞에서 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