Your solutions allows a bit more but fails with the equivalent of
def foo():
for i in range(10):
if i == 6:
return None
The loop context 'overwrites' the function context which makes the
return statement illegal. I think I need a type level list.