Steven D'Aprano <[EMAIL PROTECTED]> wrote: ... > > Reread the part I quoted above: at least some of the proponents of this > > syntax appear to be totally ignorant of 30 years of literature and > > practice of programming, "it will be tough to convince" them that closed > > intervals are a terrible mistake and semi-open ones the only way to go. > > I intellectually understand that semi-open intervals > are the only way to go. But reading the words, the part > of my brain that speaks English cries out for a closed > interval. Bad brain.
Human brain -- it's harder for non-native-speakers like me to judge the associations of certain English words in a native speaker's brain. > Given the overwhelming benefit of semi-closed > intervals, I wish to amend my proposal to follow Alex's > suggestions, namely: > > for i in (1 to 10 by 3): > print i > > should print 1 4 7. But that would be an "attractive nuisance" to many other native speakers like you, who would instinctively think of a closed interval. Maybe 'upto' rather than 'to', as somebody else suggested, would ease that. > That would make (a to b by c) equivalent to > range(a,b,c) except that it returns an iterator rather > than a list. Hmmm... putting it that way, the new > syntax actually costs 1 keystroke, or saves 1 if you > put spaces after the commas in the range expression. > Does it add enough clarity and ease of understanding to > justify two new keywords? No, of course not. And if we use upto, we'll need a downto as well, a third keyword, for loops with negative step. range should return an iterator in Python 3.0 (maybe in 2010?-) and xrange will then go away, so the only issue is whether syntax sugar for it is SO badly needed as to justify 2/3 new keywords. > > whines about it); Python is clearly much better off if such people run > > away to Ruby, with its (expletive deleted) a..b AND a...b syntaxes just > > to ensure maximum confusion;-). > > Ruby uses both .. and ...? Now I'm frightened. I _like_ Ruby, mostly, but yes, it has both a..b AND a...b, one of them to indicate a semi-open interval and the other to indicate a closed one (I believe the three dots are for the semi-open, but it could be the other way 'round) -- I don't remember how it indicates a step. I do think this is a wart (lack of visual or mnemonic distinction), though I'm sure Ruby enthusiasts would not agree. Alex -- http://mail.python.org/mailman/listinfo/python-list