RosettaCodeData/Task/Generator-Exponential/Ursalang/generator-exponential.ursa
2025-06-11 20:16:52 -04:00

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())}