[Python-Dev] Product iteration
Moshe Zadka
Moshe Zadka <moshez@math.huji.ac.il>
Wed, 26 Jul 2000 16:56:12 +0300 (IDT)
On Wed, 26 Jul 2000, Guido van Rossum wrote:
> > OK, how's that: inner functions have weak reference to variables in the
> > same scope
> >
> > def f():
> > x = 1
> > def g():
> > pass
>
> Insert "print x" in the body of g, and "return g" in the body of f.
What are you trying to do, simulate classes via closures? I don't see any
reason for this to work.
However, this should work
def powers_of(n):
return map(lambda x: n**x, range(10))
> Ehm, I'm always confused by the semantics of weak references (you
> could say that I haven't a clue about them), so you'd have to do
> better than this.
>
> In any case, in your proposal the weak reference to x would go away
> when f returns, so if g is exported from f, it breaks!
Exactly. But breaks cleanly, of course (what yo suggested works great)
> This behavior is unacceptable, at least to the people who have been
> clamoring most for this feature (the Schemers): it is expected that
> x is kept alive as long as g lives.
Ummmm....to put it harshly f**k Schemers (I'm speaking as a latent schemer
myself, so I can be harsh): I don't want lexical scoping to simulate
classes, Python's got a wonderful object system. I want lexical scoping to
make the common case of map(lambda) or
def _(...):
....
map(_, ....)
less horrible (IOW, without the lambda x,n=n,y=y,something=other: hack)
The only question about lexical scoping is "what are we trying to do?".
I'm trying to have a working map(). You (seem to be) trying to simulate
objects via closures.
--
Moshe Zadka <moshez@math.huji.ac.il>
There is no IGLU cabal.
http://advogato.org/person/moshez