Consider the following Python programs:
Program 1:
def f():
n = 0
while n >= 0:
yield n
n += 1
g = f()
g.next()
g.next()
Program 2:
def h(g, n):
g(n)
def f():
n = 0
while n >= 0:
h((lambda v: yield v), n)
n += 1
g = f()
g.next()
g.next()
Program 3:
def f():
def yielder(n):
yield n
n = 0
while n >= 0:
yielder(n)
n += 1
g = f()
g.next()
g.next()