I do not know that I have ever needed 'anonymous blocks', and I have therefore not followed this discussion in detail, but I appreciate Python's beauty and want to see it maintained. So I have three comments and yet-another syntax proposal that I do not remember seeing (but could have missed).
1. Python's integration of for loops, iterators, and generators are, to me, a gem of program language design that distinguishes Python from other languages I have used. Using them to not iterate but to do something else may be cute, but in a perverted sort of way. I would rather have 'something else' done some other way. 2. General-purpose passable block objects with parameters look a lot like general-purpose anonymous functions ('full lambdas'). I bet they would be used a such if at all possible. This seems to me like the wrong direction. 3. The specific use-cases for Python not handled better by current syntax seem to be rather specialized: resource management around a block. So I cautiously propose: with <resource type> <specific resource>: <suite> with the exact semantics dependent on <resource type>. In particular: with lock somelock: codeblock could abbreviate and mean somelock.acquire() try: codeblock finally: somelock.release() (Guido's example). with file somefile: codeblock might translate to (the bytecode equivalent of) if isinstance(somefile, basestring?): somefile = open(somefile,defaults) codeblock somefile.close The compound keywords could be 'underscored' but I presume they could be parsed as is, much like 'not in'. Terry J. Reedy _______________________________________________ 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