On Thu, Apr 24, 2014 at 2:16 PM, Brendan Eich <bren...@mozilla.org> wrote: > The only proposal (let's table whether the name is 'return' or @@return) is > whether for-of constructs should have a finally maybe-call of the iterator's > return method, if present. Like SpiderMonkey's JS1.7-1.8 close method, based > in part on Python 2.5 and up.
But in Python, closing iterators is part of the protocol. It isn't mentioned in the language specification (Python does not have a detailed spec) but all language and library facilities that consume iterables do it, not just for loops. For example, given this generator: def f(): try: yield 0 finally: print("closing") note the lines that say "closing" in both examples below: >>> [FAIL for i in f()] closing Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'FAIL' is not defined >>> map(lambda: FAIL, f()) closing Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: <lambda>() takes no arguments (1 given) Even things like zip(), which can't be written in terms of a for loop, close iterators on error. -j _______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss