
On 6/12/2011 11:44 AM, Nick Coghlan wrote:
The rationale and proposed semantics sections of PEP 3150 have been heavily modified based on the various discussions on the topic back in April.
http://www.python.org/dev/peps/pep-3150/
(Note that the PEP is still officially Deferred - this entire idea still intrigues me, but I'm also still not convinced it's worth the additional language complexity).
I tried to read this with an open mind, but I still strongly dislike it. I think it would make Python harder to learn and read and would lead to more confusion and questions on python-list. I think having a different rule for function compilation makes the proposal even worse, as people would come to expect early binding (outside the given context) even more than now. If one does not like default args, one can either use class instances or closures. The latter were explicitly introduced as an alternative to using default args. Do we really need a fourth solution to the same problem? I do not see comprehensions, which are *expressions*, as a precedent for out-of-order *statements*. Nested expressions are not left-to-right either, nor are assignments: "a[3] = b*f(c+d)". 'Given' or 'where' constructs are sometimes used in mathematical writings, especially formula exposition, but they typically, if not always, are isolated (like the examples in the PEP), and not part of a code sequence. So this is notreally a precedent to me. Example: fv = p * (1 + i/12)**t... , where fv = present value p = principle i = nominal annual interest rate t = time in months -(1+whatever) -- Terry Jan Reedy