inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

range와 느긋한 L.range

지연평가가 가능한 이유가..

339

hhhh

작성한 질문수 24

3

Lazy.range 함수가 이터러블 객체를 반환해서라기보다는

제너레이터의 yield를 통한 순차적인 제어권 위임때문이라고 보는게 더 맞지 않나요?

javascript 함수형-프로그래밍

답변 1

5

MDU 유인동

안녕하세요 :)

질문자분께서 잘 알고 계시듯 yield가 순차적으로 제어권을 위임하는 것은 제너레이터가 이터레이터를 반환하고 그 이터레이터의 next 메서드를 통해 yield의 결과를 받으며 상호 동작하고 있기 때문에 지연 평가가 가능한 것이겠지요.

딱 어떤 부분이 지연평가를 가능하게 하는 가장 핵심 적인 부분인가라는 관점으로 바라본다고 한다면 저는 제너레이터는 수단이고 이터레이터가 오히려 더 핵심적인 아이디어라고 이야기할 수 있다고 생각합니다.

아래 링크는 타 회사 개발자분들께 오프라인으로 교육할 때 사용했던 자료여서 영상 공개는 어렵지만 코드를 보실 수 있는데요.

https://github.com/indongyoo/NAVER-Pay-functional-js/blob/master/1/QnA.html#L52

이 코드에서는 제너레이터 없이 ES5 문법 만으로 이터레이터를 만들어서 지연평가를 구현하고 있습니다. 결과적으로 제너레이터는 이 코드의 이터레이터와 동일한 이터레이터를 반환하는 것이 목적이라고 말씀드리고 싶습니다.

감사합니다.

프론트엔드 실무에서 어떤때에 쓰이는지 궁금합니다

1

111

1

함수형 프로그래밍 심화 강의 자료 추천

0

72

2

함수형 자바스크립트 프로그래밍 책

0

52

1

filter가 아무것도 걸러내지 못하는 경우

0

113

1

take 함수의 성능적면에서의 이점

1

463

1

pipe함수

1

530

1

Identity 함수

0

450

1

함수형 프로그래밍이란

0

831

1

reduce 예제 코드 제안!

0

404

1

fxts를 배워보려고 합니다.

1

537

1

flatMap 관련 질문드립니다~

1

444

1

다용성이 높은 L.flatMap

0

357

1

변수에 재 할당 금지~

0

540

1

DevTools라고 옆에 결과 확인하는거 어떻게 하나요?

0

483

2

소요시간에 관해서 질문드립니다

1

457

1

join에 대한 내용이 궁금증이 해결되지 않아서 질문드립니다!

0

465

2

reduce에 L.range를 사용할 때

0

526

2

[이해내용 공유] Lazy 에서 C.reduce가 병렬 효과를 내는 이유

3

738

2

제가 이해한 C.Reduce와 Reduce의 동작 차이 정리

2

787

3

go, pipe 함수 관련하여 질문 드립니다.

1

498

1

안녕하세요 강사님!

0

379

2

fxts에 go가 없는 이유?

0

839

1

비동기 관련 질문입니다!

0

460

1

질문 있습니다.

0

515

1