36 lines
568 B
Text
36 lines
568 B
Text
let count = gen() {
|
|
var n = 0
|
|
loop {
|
|
yield n
|
|
n := n + 1
|
|
}
|
|
}
|
|
|
|
let powers = gen(m) {
|
|
for n in count() {
|
|
yield n ** m
|
|
}
|
|
}
|
|
|
|
let filtered = gen(s1, s2) {
|
|
var v = s1()
|
|
var f = s2()
|
|
loop {
|
|
if v > f {
|
|
f := s2()
|
|
continue
|
|
} else if v < f {
|
|
yield v
|
|
}
|
|
v := s1()
|
|
}
|
|
}
|
|
|
|
let squares = powers(2)
|
|
let cubes = powers(3)
|
|
let f = filtered(squares, cubes)
|
|
|
|
// Drop first 20 items.
|
|
for i in range(20) {f()}
|
|
// Print next 10 items.
|
|
for i in range(10) {print(f())}
|