[Python-Dev] Recommend accepting PEP 312 -- Simple Implicit Lambda
Donovan Baarda
abo at minkirri.apana.org.au
Sun Jun 19 09:48:19 CEST 2005
Kay Schluehr wrote:
> Josiah Carlson wrote:
>
> > Kay Schluehr <kay.schluehr at gmx.net> wrote:
> >
> >
> >> Maybe anonymus function closures should be pushed forward right now
> not only syntactically? Personally I could live with lambda or several
> >> of the alternative syntaxes listed on the wiki page.
I must admit I ended up deleting most of the "alternative to lambda"
threads after they flooded my in box. So it is with some dread I post
this, contributing to it...
As I see it, a lambda is an anonymous function. An anonymous function is
a function without a name. We already have a syntax for a function...
why not use it. ie:
f = filter(def (a): return a > 1, [1,2,3])
The implications of this are that both functions and procedures can be
anonymous. This also implies that unlike lamba's, anonymous functions
can have statements, not just expressions. You can even do compound
stuff like;
f = filter(def (a): b=a+1; return b>1, [1,2,3])
or if you want you can use indenting;
f = filter(def (a):
b=a+1
return b>1, [1,2,3])
It also means the following becomes valid syntax;
f = def (a,b):
return a>b
I'm not sure if there are syntactic ambiguities to this. I'm not sure if
the CS boffins are disturbed by "side effects" from statements.
Perhaps both can be resolved by limiting annonymous functions to
expressions. Or require use of brackets or ";" to resolve ambiguity.
This must have been proposed already and shot down in flames... sorry
for re-visiting old stuff and contributing noise.
--
Donovan Baarda
More information about the Python-Dev
mailing list