git.fiddlerwoaroof.com
Raw Blame History
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)))