function generator(x, y) { print("this = " + this + "\n") yield // print the contents of the environment foreach(k,v in this) print(" " + k + "=" + v + "\n") // set some locals local val1 = x local val2 = y yield // print locals print("val1 = " + val1 + ", val2 = " + val2 + "\n") // create new slot in environment this.bazoomba <- "hi" yield print("done!\n") } local context = { bar = 42 baz = "this is a string" } local gtor print("\nrunning .call()...\n") gtor = generator.call(context, "arg1", "arg2") foreach(x in gtor) { } print("\nrunning .acall()...\n") gtor = generator.acall([context,0,1]) foreach(x in gtor) { } print("\nrunning .pcall()...\n") gtor = generator.pcall(context, 32, 64) foreach(x in gtor) { } print("\nrunning .pacall()...\n") gtor = generator.pacall([context,100,200]) foreach(x in gtor) { }