var y = 0; //a global to keep track of state //does not need closures for this to work yet fun next(x) { if (x == 10) { y = y + 1; x = 0; } if (y == 10) return -1; return x+y+1; } var i = 0; for (; i != -1; i = next(i)) print(i); // before using next //output:0 // y = 0 //output:1 //output:2 //output:3 //output:4 //output:5 //output:6 //output:7 //output:8 //output:9 //output:10 // y = 1 //output:2 //output:3 //output:4 //output:5 //output:6 //output:7 //output:8 //output:9 //output:10 // y = 2 //output:3 //output:4 //output:5 //output:6 //output:7 //output:8 //output:9 //output:10 // y = 3 //output:4 //output:5 //output:6 //output:7 //output:8 //output:9 //output:10 // y = 4 //output:5 //output:6 //output:7 //output:8 //output:9 //output:10 // y = 5 //output:6 //output:7 //output:8 //output:9 //output:10 // y = 6 //output:7 //output:8 //output:9 //output:10 // y = 7 //output:8 //output:9 //output:10 // y = 8 //output:9 //output:10 // y = 9 //output:10 // y = 10