질문은 :
- 생성기는 기능적 프로그래밍 패러다임을 파괴합니까? 그 이유는 무엇?
- 그렇다면 생성기를 기능 프로그래밍에 사용할 수 있습니까?
다음을 고려하세요:
function * downCounter(maxValue) {
yield maxValue;
yield * downCounter(maxValue > 0 ? maxValue - 1 : 0);
}
let counter = downCounter(26);
counter.next().value; // 26
counter.next().value; // 25
// ...etc
이 downCounter
방법은 상태 비 저장으로 나타납니다. 또한 downCounter
동일한 입력으로 호출 하면 항상 동일한 출력이 발생합니다. 그러나 동시에 전화next()
하면 일관된 결과가 생성되지 않습니다.
이 예제 counter
에서는 생성기 객체이므로 생성자가 함수형 프로그래밍 패러다임을 깨뜨릴 지 여부가 확실하지 않으므로 호출 next()
하면 정확히 동일한 생성기 객체와 동일한 결과가 생성됩니다 maxValue
.
또한 someCollection[3]
배열을 호출 하면 항상 네 번째 요소가 반환됩니다. next()
마찬가지로 생성기 객체에서 네 번 호출 하면 항상 네 번째 요소가 반환됩니다.
더 많은 맥락을 위해 프로그래밍 카타 작업을하는 동안 이러한 질문이 제기되었습니다 . 질문에 대답 한 사람은 생성기가 함수형 프로그래밍에 사용될 수 있는지 여부와 상태를 유지하는지 여부에 대한 질문을 제기했습니다.