You can also definitely implement iterators using first-order functions:
const iterate = array => { const step = index => ({ value: array[index], next: () => step(index + 1) }); return step(0); } // add some combinators on top