Pertanyaannya adalah:
- Apakah generator melanggar paradigma pemrograman fungsional? Mengapa atau mengapa tidak?
- Jika ya, dapatkah generator digunakan dalam pemrograman fungsional dan bagaimana caranya?
Pertimbangkan yang berikut ini:
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
The downCounterMetode muncul bernegara. Selain itu, panggilan downCounterdengan input yang sama, akan selalu menghasilkan output yang sama. Namun, pada saat yang sama, panggilan next()tidak menghasilkan hasil yang konsisten.
Saya tidak yakin apakah generator merusak paradigma pemrograman fungsional atau tidak karena dalam contoh ini counteradalah objek generator dan pemanggilan next()akan menghasilkan hasil yang sama seperti objek generator lain yang dibuat dengan sama persis maxValue.
Selain itu, memanggil someCollection[3]array akan selalu mengembalikan elemen keempat. Demikian pula, memanggil next()empat kali pada objek generator juga akan selalu mengembalikan elemen keempat.
Untuk lebih banyak konteks, pertanyaan-pertanyaan ini muncul saat mengerjakan kata pemrograman . Orang yang menjawab pertanyaan, mengajukan pertanyaan apakah generator dapat digunakan dalam pemrograman fungsional atau tidak.