git.fiddlerwoaroof.com
unsorted/pythonsnippets1_0003.py
955f14fa
 def caller(f):
   def _inner(*a, **kw):
     iter = f(*a, **kw)
     result = iter.next()
     print iter
     while hasattr(result, '__iter__') and callable(result[0]):
       result = iter.send(apply(result[0], *result[1:]))
     return result
   return _inner
 
 
 @caller
 def test(a):
   result = None
   if a == 1:
     yield 1
   else:
     yield (yield (lambda x,y: x*y, (a, a-1)))