October 10, 2023
const range = l => {
let i = -1
let res = []
while (++i < l) {
res.push(i)
}
return res
}
var list = L.range(4)
log(list) // 배열 [0, 1, 2, 3]
log(reduce(add, list)) // 6
const L = {}
L.range = function*(l) {
let i = -1
while (++i < l) {
log(i, 'L.range')
yield i
}
}
var list = L.range(4)
log(list) // 이터레이터 객체
log(reduce(add, list)) // 6
const take = (l, iter) => {
let res = []
for (const a of iter) {
res.push(a)
if (res.length == l) return res
}
return res
}
console.log(take(5, range(100000)))
console.log(take(5, L.range(100000)))
const L = {}
L.map = function*(f, iter) {
for (const a of iter) yield f(a)
}
const L = {}
L.filter = function*(f, iter) {
for (const a of iter) if (f(a)) yield a
}