in python on guile you can do,

def g(yield_fkn,x):
    yield_fkn(x+1)
    yield_fkn(x+2)

and 
def f(l):
   for x in l:
        g(yield,x)

and this extension works like this in python on guile

list(f([1,2])
--> [1,2,2,3]

Nifty right. This is thanks to the superb infrastructure in scheme (selimited continuations). Not only this, in python-on-guile the generators and iterators are serialisable and hence you can deep copy them. (on the condition that you turn off unboxing in the compiler).