[Python-Dev] Extended Function syntax
Just van Rossum
just@letterror.com
Sun, 2 Feb 2003 23:56:52 +0100
Samuele Pedroni wrote:
> a thunk is like a Smalltalk block, a closure that can rebind the
> locals and can get arguments ( (line): above) ), and maybe non-local
> returns ( ^ in Smalltalk): in pseudo-python the above is:
>
> count = 0
> defClosureAllowingRebinding _thunk(line):
> if line.find('Python') >=0:
> count += 1
> print line,
>
> iterclose(open('blah.txt'))(_thunk)
If _rebinding_ is what we're after, then why not go all the way an
introduce a rebind operator? Say ':='. Augmented assignment would also
become rebinding then (hm, I hear the sound of code breaking in the
distance ;-) Add that to MWH's function/class filter patch and you can
write:
count = 0
def _thunk(line) [iterclose(open('blah.txt'))]:
if line.find('Python') >=0:
count += 1 # or count := count + 1
print line,
Not nice that _thunk needs to be named, but perhaps the function name
can become optional:
count = 0
def (line) [iterclose(open('blah.txt'))]:
if line.find('Python') >=0:
count += 1
print line,
How's that for a change of direction? ;-)
I'm just throwing in an idea, I'm not saying I like this (I don't know
yet).
Just