RosettaCodeData/Task/Generator-Exponential/Phix/generator-exponential.phix
2026-02-01 16:33:20 -08:00

40 lines
792 B
Text

-- demo\rosetta\Generator_Exponential.exw
without js -- tasks
atom res
bool terminate = false
procedure powers(integer p)
integer i = 0
while not terminate do
res = power(i,p)
task_suspend(task_self())
task_yield()
i += 1
end while
end procedure
constant squares = task_create(powers,{2}),
cubes = task_create(powers,{3})
atom square, cube
task_schedule(cubes,1)
task_yield()
cube = res
sequence snq = {}
for i=1 to 30 do
do
task_schedule(squares,1)
task_yield()
square = res
while cube<square do
task_schedule(cubes,1)
task_yield()
cube = res
end while
until square!=cube
if i>20 then snq &= square end if
end for
?snq
terminate = 1
wait_key()