_______________________________________________On Sat, 28 Apr 2018 at 12:41, Tim Peters <tim.peters@gmail.com> wrote:My big concern here involves the:if local(m = re.match(regexp, line)):print(m.group(0))example. The entire block needs to be implicitly local for that to work - what happens if I assign a new name in that block? Also, what happens with:if local(m = re.match(regexp1, line)) or local(m = re.match(regexp2, line)):print(m.group(0))Would the special-casing of local still apply to the block? Or would you need to do:if local(m = re.match(regexp1, line) or re.match(regexp2, line)):print(m.group(0))This might just be lack of coffee and sleep talking, but maybe new "scoping delimiters" could be introduced. Yes - I'm suggesting introducing curly braces for blocks, but with a limited scope (pun intended). Within a local {} block statements and expressions are evaluated exactly like they currently are, including branching statements, optional semi-colons, etc. The value returned from the block is from an explicit return, or the last evalauted expression.a = 1
b = 2
c =local(a=3) * local(b=4)c = local { a=3 } * local { b=4 }c =local(a=3,b=4,a*b)c = local {a=3;b=4;a*b }c = local {a = 3b = 4a * b}c = local(a=3,b=local(a=2, a*a), a*b)c = local {a = 3b = local(a=2, a*a)return a * b}r1, r2 = local(D = b**2 - 4*a*c,
sqrtD = math.sqrt(D),
twoa = 2*a,
((-b + sqrtD)/twoa, (-b - sqrtD)/twoa))r1, r2 = local {D = b**2 - 4*a*c
sqrtD = math.sqrt(D)
twoa = 2*a
return ((-b + sqrtD)/twoa, (-b - sqrtD)/twoa)}if local(m = re.match(regexp, line)):
print(m.group(0))if local { m = re.match(regexp, line) }:print(m.group(0))And a further implication:a = lambda a, b: local(c=4, a*b*c)a = lambda a, b: local {c = 4return a * b * c}Tim Delaney
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/
On Sat, 28 Apr 2018 at 12:41, Tim Peters <tim.peters@gmail.com> wrote:My big concern here involves the:if local(m = re.match(regexp, line)):print(m.group(0))example. The entire block needs to be implicitly local for that to work - what happens if I assign a new name in that block? Also, what happens with:if local(m = re.match(regexp1, line)) or local(m = re.match(regexp2, line)):print(m.group(0))Would the special-casing of local still apply to the block? Or would you need to do:if local(m = re.match(regexp1, line) or re.match(regexp2, line)):print(m.group(0))This might just be lack of coffee and sleep talking, but maybe new "scoping delimiters" could be introduced. Yes - I'm suggesting introducing curly braces for blocks, but with a limited scope (pun intended). Within a local {} block statements and expressions are evaluated exactly like they currently are, including branching statements, optional semi-colons, etc. The value returned from the block is from an explicit return, or the last evalauted expression.a = 1
b = 2
c =local(a=3) * local(b=4)c = local { a=3 } * local { b=4 }c =local(a=3,b=4,a*b)c = local {a=3;b=4;a*b }c = local {a = 3b = 4a * b}c = local(a=3,b=local(a=2, a*a), a*b)c = local {a = 3b = local(a=2, a*a)return a * b}r1, r2 = local(D = b**2 - 4*a*c,
sqrtD = math.sqrt(D),
twoa = 2*a,
((-b + sqrtD)/twoa, (-b - sqrtD)/twoa))r1, r2 = local {D = b**2 - 4*a*c
sqrtD = math.sqrt(D)
twoa = 2*a
return ((-b + sqrtD)/twoa, (-b - sqrtD)/twoa)}if local(m = re.match(regexp, line)):
print(m.group(0))if local { m = re.match(regexp, line) }:print(m.group(0))And a further implication:a = lambda a, b: local(c=4, a*b*c)a = lambda a, b: local {c = 4return a * b * c}Tim Delaney_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/