continue int fibonacci() { int a = 0, b = 1; while (1) { yield(a += b); yield(b += a); } }
int main() { function fib = fibonacci(); while (1) { write("--> %d\n", fib()); sleep(0.125); } }
In theory, this should yield a stream of Fibonacci numbers (1, 1, 2, 3, 5, 8, 13, etc). In practice - on Pike 8.1.14 - it yields counting numbers (1, 2, 3, 4, 5, etc). I've tried to defeat the optimization in a few ways but to no avail. The only way to get Fibonacci numbers out of it is to avoid yield altogether:
#define yield(x) write("%d\n", x)
Any ideas?
ChrisA