[Python-ideas] A "local" pseudo-function

Ryan Gonzalez rymg19 at gmail.com
Sat Apr 28 23:09:46 EDT 2018


I'm pretty sure the debate about braces defining scope in Python has 
long-since ended...

--
Ryan (ライアン)
Yoko Shimomura, ryo (supercell/EGOIST), Hiroyuki Sawano >> everyone else
https://refi64.com/



On April 28, 2018 9:37:57 PM Ken Hilton <kenlhilton at gmail.com> wrote:

>  > local { m = re.match(regexp, line)
>>            if m:
>>                print(m.group(0))
>>       }
>
> Or how about making "local" a pseudo-statement of sorts?
>
>     local (m=re.match(exp, string)) {
>         if m:
>             print(m.group(0))
>     }
>
> The grammar would be as follows:
>
>     local_stmt = "local" "(" local_assignments [ "," local_assignments ...
> ] ")" "{" BLOCK "}"
>     local_assignments = NAME "=" EXPR
>
> There would be no question about the scope of things in BLOCK - the
> variables would disappear after the closing "}".
> I say "pseudo"-statement because I'm wondering if something like this would
> be legal:
>
>     things = list(map(lambda m: local (gp1=m.group(1)) {
>         result = gp1 + ''.join(reversed(gp1))
>         result += gp1.replace('some', 'thing')
>         return result
>     }, re.finditer(exp, string)))
>
> I'm thinking specifically about the "lambda m: local (...) {...}". If that
> was made legal, it would finally allow for full-fledged anonymous
> functions. Indeed, the "local" (statement?) itself is actually almost
> equivalent to defining an anonymous function and executing it immediately,
> i.e. this:
>
>     (lambda x=5: x*x)()
>
> would be equivalent to this:
>
>     local (x=5) {
>         return x * x
>     }
>
> both evaluating to 25.
>
> Just some random thoughts!
>
> Sincerely,
> Ken
> ​ Hilton​
> ;
>
>
>
> ----------
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
>




More information about the Python-ideas mailing list