On Fri, 1 Jul 2005, Mike P. wrote:
"Björn Lindström" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
"F. Petitjean" <[EMAIL PROTECTED]> writes:
res = [ bb+ii*dd for bb,ii,dd in zip(b,i,d) ]
Hoping that zip will not be deprecated.
Nobody has suggested that. The ones that are planned to be removed are
lambda, reduce, filter and map. Here's GvR's blog posting that explains
the reasons:
http://www.artima.com/weblogs/viewpost.jsp?thread=98196
That really sucks, I wasn't aware of these plans. Ok, I don't use reduce
much, but I use lambda, map and filter all the time. These are some of
the features of Python that I love the best. I can get some pretty
compact and easy to read code with them.
Same here.
And no, I'm not a Lisp programmer (never programmed in Lisp). My
background being largely C++, I discovered lambda, apply, map and filter
in Python, although I had seen similar stuff in other functional
languages like Miranda and Haskell.
Same here too!
Also, I don't necessarily think list comprehensions are necessarily
easier to read. I don't use them all that much to be honest.
And here!
However, i also felt that way about generator functions - until the other
day, when i realised one was the best solution to a problem i had. That
made me realise that the same was probably true of list comprehensions.
That said, i do still think that map etc are better than list comps,
because they involve less language. Once you have the idea of a function
and a list, you can understand map as a function that operates on lists;
list comprehensions provide a whole new splodge of arbitrary syntax to
learn. I guess you could say the same about lambda, which is really an
essential part of the whole map way of life, but i don't think that's fair
- list comprehensions are a structure for doing just one thing, whereas
lambda is a construct of enormous general power.
I'd be happy for the lambda syntax to be tidied up, though - perhaps it
could be merged with def? Like:
def name(args): # traditional form
some_statements
return some_expression
def name(args): return some_expression # one-line form
def name(args): some_statements; return some_expression
def name(args) = some_expression # shorthand one-line form
Then an anonymous form, which is an expression rather than a statement:
def (args):
some_statements
return some_expression
def (args): return some_expression
def (args) = some_expression
The latter form is like a lambda; i'm not sure how the former forms would
work inside enclosing expressions; i think it would look pretty sick:
surfaceAreaToVolumeRatios = map(def (radius):
area = 4.0 * math.pi * (radius ** 2)
volume = 4.0 / 3.0 * math.pi * (radius ** 2)
return area / volume
, radii)
It works, but i admit it's not hugely pretty. But then, i would't advise
anyone to actually do this; it's just there for completeness.
You might also want to allow:
def name(args) = some_statements; some_expression
And the anonymous counterpart. But i'm not sure about that one. Multiple
expressions inside lambdas would sometimes be useful, but you can get
those with the shorthand form.
I think at this stage the Python community and Python programmers would
be better served by building a better, more standardised, cross
platform, more robust, better documented, and more extensive standard
library. I would be happy to contribute in this regard, rather than
having debates about the addition and removal of language features which
don't improve my productivity.
Same here.
Sorry, I've probably gone way off topic, and probably stirred up
political issues which I'm not aware of, but, man when I hear stuff like
the proposed removal of reduce, lambda, filter and map, all I see ahead
of me is a waste of time as a programmer.
Same here.
Sorry for the OT long rant.
Yeah, that was really off-topic for a python newsgroup. You didn't even
mention regional accents once!
tom
--
How did i get here?
--
http://mail.python.org/mailman/listinfo/python-list