Josiah Carlson wrote:

Since PEP 310 was already mentioned, can we just say that the discussion
can be boiled down to different ways of spelling __enter__/__exit__ from
PEP 310?

It's not quite the same thing. PEP 310 suggests a mechanism with a fixed control flow -- do something on entry, do the code block, do something on exit. A general block-passing mechanism would give complete control to the function as to when and how to call the block.

However, it's possible that if generators were enhanced
with some means of allowing yield inside try-finally,
then generators plus PEP 310 would cover most use cases:
for-loops and generators when you want to loop, and
PEP 310 when you don't.

So rather than coming up with new syntax at this point,
perhaps it would be better to concentrate on the problem
of yield inside try-finally. Even if the finally can't
be guaranteed to run under all conditions, I think it
would be useful if it could be arranged so that

  for x in somegenerator():
    ...
    raise Blather
    ...

would caused any finallies that the generator was suspended
inside to be executed. Then the semantics would be the
same as if the for-loop-over-generator were implemented by
passing a thunk to a function that calls it repeatedly.

--
Greg Ewing, Computer Science Dept, +--------------------------------------+
University of Canterbury,          | A citizen of NewZealandCorp, a       |
Christchurch, New Zealand          | wholly-owned subsidiary of USA Inc.  |
[EMAIL PROTECTED]          +--------------------------------------+
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to