> -----Original Message----- > From: Michael W. Ryder [mailto:_mwryder55 / gmail.com] > But i.succ does Not work in the following: > > i = 1 > while (i < 10) > puts i.succ > end > > the only way to get this to work is to use: > puts i; i = i.succ > > which is not as clean as using puts i++. I'd argue it's much, much cleaner. ++ has long been a source of confusion for C programmers. Consider: int i = 1; while (i < 10) { printf("%d,",i++); } What does it ouput? 1,2,3,4,5,6,7,8,9, or 2,3,4,5,6,7,8,9,10,? Because we're all experienced C programmers here we of course know it to be 1,2,3,4,5,6,7,8,9, but it's not uncommon for experienced C programmers to make mistakes around a++ vs ++a. On the other hand: int i = 1; while (i <10) { printf("%d,",i); i+=1; } Makes it explicitly clear what is happening. Then consider the ruby direct ruby translation: i = 1; while (i <10) print "#{i}," i+=1; end Even a non-programmer is going to have a pretty darn clear idea of what is going on here. Sure it's one line longer but much more understandable, and therefore cleaner. If there is one thing playing Perl Golf should have taught all programmers it's that shorter != better. Now consider the ruby way: 10.times do |i| print "#{i}," end Some length as the C code, but much more readable. Heck, it's almost English! Which is part of the beauty of Ruby: It's simple, natural, readable syntax. I've seen a lot of arguments that it doesn't fit with ruby's object model, but to me that's not the key point. ++ doesn't fit with Ruby's elegant syntax.