Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #7048
| From | Jussi Piitulainen <jpiitula@ling.helsinki.fi> |
|---|---|
| Newsgroups | comp.lang.python |
| Subject | Re: Something is rotten in Denmark... |
| Date | 2011-06-05 16:10 +0300 |
| Organization | University of Helsinki |
| Message-ID | <qotmxhw5sq2.fsf@ruuvi.it.helsinki.fi> (permalink) |
| References | (10 earlier) <238bf9b2-fa07-4da3-b7a0-3bf07a6bd947@q12g2000prb.googlegroups.com> <qotd3ivtp5k.fsf@ruuvi.it.helsinki.fi> <8b46f9a0-1b32-42cb-9f02-a520ae5ca787@r35g2000prj.googlegroups.com> <qotr578bi49.fsf@ruuvi.it.helsinki.fi> <cec48785-d239-46d5-9a24-5a9c892bce77@y27g2000prb.googlegroups.com> |
rusi writes: > On Jun 5, 5:03 pm, Jussi Piitulainen wrote: > > rusi writes: > > > On Jun 3, 11:17 am, Jussi Piitulainen wrote: > > > > rusi writes: > > > > > So I tried: > > > > > Recast the comprehension as a map > > > > > Rewrite the map into a fmap (functionalmap) to create new bindings > > > > > > > def fmap(f,lst): > > > > > if not lst: return [] > > > > > return [f(lst[0])] + fmap(f, lst[1:]) > > > > > > > Still the same effects. > > > > > > > Obviously I am changing it at the wrong place... > > > > > > >>> fs = [(lambda n : n + i) for i in range(10)] > > > > >>> [f(1) for f in fs] > > > > [10, 10, 10, 10, 10, 10, 10, 10, 10, 10] > > > > > > >>> fs = list(map(lambda i : lambda n : n + i, range(10))) > > > > >>> list(map(lambda f : f(1), fs)) > > > > [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] > > > > > Thanks Jussi for that code -- but I am not fully able to wrap my head > > > around it. > > > > Oops, sorry, I seem to have edited out a question that I meant to ask. > > The question was this: How do -you- write the list comprehension in > > terms of your fmap? What -is- the expression that still has the same > > effects? That is, where do you bind the i's? > > > > The obvious-to-me way is shown above, but there it is the outer lambda > > that establishes the distinct i's for the different closures. > > > > (The composition list(map(...)) works in both versions of Python.) > > > > > Is the problem in the lambda? ZF? > > > Are you trying to say that map works (functionally) and ZF is > > > imperative? > > > > Sorry, what is ZF? > > > > I'm saying that your fmap works, but in itself it does not provide the > > bindings that we are talking about, and you didn't show what does. The > > outer lambda in my example does that. > > > > The Python list comprehension [... for i in ...] binds (or assigns to) > > just one i which is shared by all the closures above. They end up > > having the same value for i because it's the same i. > > > > I hope this is less obscure now. > > I was wondering why the list(... > Now I see that map returns normal lists in python2 and some generator- > like-thing in 3 > I would have said: Shall we just stick to 2 (for this discussion) but > then 2 seems to have a double error that self-corrects this example... > > OOOOFFF -- too many variables... > > [ZF is Zermelo-Fraenkel -- old name for list comprehension -- I guess > my age leaks like python's ZF (sorry comprehension) :-) ] Oh, ok. Zermelo-Fraenkel came to mind, but I didn't know it's been used as a name for list comprehensions. > Anyway... My (summary,tentative) conclusion is that python's > comprehensions leak. > The one leak fixed in python3 has not fixed the other (revealed in > this thread) > > All this has little to do with lambda (whose scope rules were fixed > around python 2.2 IIRC) > > I'd be interested in ur take on this... I think we agree. I've been saying all along that the perceived problem is not with the lambda at all but with the way the list comprehension deals with its variable. (I see that some people understand the situation correctly but blame the lambda anyway.) Personally, I like your summary, but I'm enough of an outsider that I do not want to suggest that there is anything wrong with Python. I just wish to understand how it works, as with any language that I use. The issue of this thread seems to turn up repeatedly, but is there a problem with the language mechanisms, is there a problem with the ways we talk about the language, or is this just the case where people need to be educated? I'm not sure. (Incidentally, I'm so new to Python that I started right with 3.0. I use some 2.4, 2.5-ish a little because software on a certain server is not kept updated, but I never knew 2.2.)
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Something is rotten in Denmark... harrismh777 <harrismh777@charter.net> - 2011-05-31 01:48 -0500
Re: Something is rotten in Denmark... Chris Rebert <clp2@rebertia.com> - 2011-05-31 00:00 -0700
Re: Something is rotten in Denmark... Ian Kelly <ian.g.kelly@gmail.com> - 2011-05-31 01:35 -0600
Re: Something is rotten in Denmark... Jussi Piitulainen <jpiitula@ling.helsinki.fi> - 2011-05-31 13:08 +0300
Re: Something is rotten in Denmark... Thomas Rachel <nutznetz-0c1b6768-bfa9-48d5-a470-7603bd3aa915@spamschutz.glglgl.de> - 2011-05-31 12:48 +0200
Re: Something is rotten in Denmark... Jussi Piitulainen <jpiitula@ling.helsinki.fi> - 2011-05-31 15:15 +0300
Re: Something is rotten in Denmark... Terry Reedy <tjreedy@udel.edu> - 2011-05-31 13:11 -0400
Re: Something is rotten in Denmark... harrismh777 <harrismh777@charter.net> - 2011-05-31 15:18 -0500
Re: Something is rotten in Denmark... Ian Kelly <ian.g.kelly@gmail.com> - 2011-05-31 16:24 -0600
Re: Something is rotten in Denmark... Terry Reedy <tjreedy@udel.edu> - 2011-05-31 19:14 -0400
Re: Something is rotten in Denmark... harrismh777 <harrismh777@charter.net> - 2011-05-31 19:09 -0500
Re: Something is rotten in Denmark... Terry Reedy <tjreedy@udel.edu> - 2011-06-01 13:11 -0400
Re: Something is rotten in Denmark... harrismh777 <harrismh777@charter.net> - 2011-06-01 19:40 -0500
Re: Something is rotten in Denmark... harrismh777 <harrismh777@charter.net> - 2011-06-01 19:50 -0500
Re: Something is rotten in Denmark... Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2011-06-02 04:37 +0000
Re: Something is rotten in Denmark... Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2011-06-02 05:14 +0000
Re: Something is rotten in Denmark... Chris Angelico <rosuav@gmail.com> - 2011-06-02 18:02 +1000
Re: Something is rotten in Denmark... Alain Ketterlin <alain@dpt-info.u-strasbg.fr> - 2011-06-02 13:00 +0200
Re: Something is rotten in Denmark... Jussi Piitulainen <jpiitula@ling.helsinki.fi> - 2011-06-02 15:51 +0300
Re: Something is rotten in Denmark... Terry Reedy <tjreedy@udel.edu> - 2011-06-02 15:43 -0400
Re: Something is rotten in Denmark... Gregory Ewing <greg.ewing@canterbury.ac.nz> - 2011-06-03 11:43 +1200
Re: Something is rotten in Denmark... rusi <rustompmody@gmail.com> - 2011-06-02 19:24 -0700
Re: Something is rotten in Denmark... Jussi Piitulainen <jpiitula@ling.helsinki.fi> - 2011-06-03 09:17 +0300
Re: Something is rotten in Denmark... rusi <rustompmody@gmail.com> - 2011-06-05 03:54 -0700
Re: Something is rotten in Denmark... Jussi Piitulainen <jpiitula@ling.helsinki.fi> - 2011-06-05 15:03 +0300
Re: Something is rotten in Denmark... rusi <rustompmody@gmail.com> - 2011-06-05 05:26 -0700
Re: Something is rotten in Denmark... Jussi Piitulainen <jpiitula@ling.helsinki.fi> - 2011-06-05 16:10 +0300
Re: Something is rotten in Denmark... Thomas Rachel <nutznetz-0c1b6768-bfa9-48d5-a470-7603bd3aa915@spamschutz.glglgl.de> - 2011-06-03 10:30 +0200
Re: Something is rotten in Denmark... Ian Kelly <ian.g.kelly@gmail.com> - 2011-06-03 11:53 -0600
Re: Something is rotten in Denmark... Alain Ketterlin <alain@dpt-info.u-strasbg.fr> - 2011-06-03 12:35 +0200
Re: Something is rotten in Denmark... Jussi Piitulainen <jpiitula@ling.helsinki.fi> - 2011-06-03 14:07 +0300
Re: Something is rotten in Denmark... harrismh777 <harrismh777@charter.net> - 2011-06-03 15:38 -0500
Re: Something is rotten in Denmark... Gregory Ewing <greg.ewing@canterbury.ac.nz> - 2011-06-04 12:40 +1200
Re: Something is rotten in Denmark... Nobody <nobody@nowhere.com> - 2011-06-03 14:07 +0100
Re: Something is rotten in Denmark... harrismh777 <harrismh777@charter.net> - 2011-06-02 10:44 -0500
Re: Something is rotten in Denmark... harrismh777 <harrismh777@charter.net> - 2011-06-02 10:55 -0500
Re: Something is rotten in Denmark... Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2011-06-02 17:22 +0000
Re: Something is rotten in Denmark... Ian Kelly <ian.g.kelly@gmail.com> - 2011-06-02 11:43 -0600
Re: Something is rotten in Denmark... Terry Reedy <tjreedy@udel.edu> - 2011-06-02 02:02 -0400
Re: Something is rotten in Denmark... harrismh777 <harrismh777@charter.net> - 2011-06-02 11:02 -0500
Re: Something is rotten in Denmark... Martin Manns <mmanns@gmx.net> - 2011-05-31 23:14 +0200
Re: Something is rotten in Denmark... Ian Kelly <ian.g.kelly@gmail.com> - 2011-05-31 15:47 -0600
Re: Something is rotten in Denmark... Martin Manns <mmanns@gmx.net> - 2011-06-01 02:57 +0200
Re: Something is rotten in Denmark... harrismh777 <harrismh777@charter.net> - 2011-05-31 16:53 -0500
Re: Something is rotten in Denmark... harrismh777 <harrismh777@charter.net> - 2011-05-31 17:06 -0500
Re: Something is rotten in Denmark... Chris Angelico <rosuav@gmail.com> - 2011-06-01 08:39 +1000
Re: Something is rotten in Denmark... Chris Angelico <rosuav@gmail.com> - 2011-06-01 08:40 +1000
csiph-web