On 3/21/14 11:39 PM, Rustom Mody wrote:
Given
fl = [lambda y : x+y for x in [1,2,3]]
It means:
def rec(l):
if not l: return []
else:
x,ll = l[0],l[1:]
return [lambda y: x + y] + rec(ll)
followed by
fl = rec([1,2,3])
Naturally a reasonable *implementation* would carry this *intention*
{snip}
[But then I find Lisp and much of basic haskell natural and most of C++ not,
so my views are likely prejudiced :-)
This discussion (the entire thread) comes up again and again over the
years because python tries to be all things to all people, without much
reason behind the motivation. I'm speaking of Lambda (filter, map, reduce).
Python is not Lisp. (I love Lisp too). Python is not Haskell (I love
Haskell too).
Lambda is a problem, if only because it causes confusion. What's the
problem? Glad you asked. The constructs DO NOT work the way most people
would expect them to, having limited knowledge of python! I ran into
this thing about seven years ago (when I was studying Haskell, and
Scheme) and I wanted to see how "pure functional" python was (well, not
at all really).
I can see uses for python's lambda. But, honestly, I think python could
deprecate its use and in five years just remove it from the language;
along with filter, map, and reduce !
I'm just saying;
marcus
--
https://mail.python.org/mailman/listinfo/python-list