On Saturday, March 22, 2014 3:00:10 AM UTC+5:30, Ian wrote: > On Fri, Mar 21, 2014 at 3:09 PM, Rustom Mody wrote: > > A 'for' introduces a scope:
> This is false. And On Saturday, March 22, 2014 3:04:48 AM UTC+5:30, Gregory Ewing wrote: > > A 'for' introduces a scope: > No, it doesn't! Ha -- funny that *I* missed that one. Thanks both Ian and Gregory In fact one of my grumbles against python is that list comprehension's are a poor imitation of haskell's comprehensions. And then I promptly forgot about it! Actually there are two leakages in python 2, one of which is corrected in python 3. One: a comprehension variable leaks outside after the comprehension This is corrected in python3. Two: A comprehension variable is not bound but reassigned across the comprehension. This problem remains in python3 and causes weird behavior when lambdas are put in a comprehension >>> fl = [lambda y : x+y for x in [1,2,3]] >>> [fl[i](2) for i in [0,1,2]] [5, 5, 5] The same in haskell: Prelude> let fl = [\ y -> x + y | x <- [1,2,3]] Prelude> [(fl!!i) 0 | i<- [0,1,2]] [1,2,3] -- https://mail.python.org/mailman/listinfo/python-list