> -----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.