> If we really want "++", (a) is the way to go, but I don't think it's
> worthy to add new assignment syntax.  Mostly because we have less
> chance to use it in Ruby.  Thanks to iterators.

Unfortunately, Ruby iterators are not always a viable option.  Consider
the following:

    def foo
      return [1, 2, 3]
    end

    def bar
      return [4, 5, 6]
    end

    f = foo
    b = bar
    f.each_index do |i|
      puts "(#{f[i]}, #{b[i]}"
    end

This is all fine and dandy, but consider the case where f and b are not
indexable like this.  Iterating through them is trivial in C++ (note that
I've sacrificed some correctness for readability here):

    Type::const_iterator f_itor = f.begin();
    Type::const_iterator b_itor = b.begin();
    for(; f != f.end() && b != b.end(); ++f, ++b)
    {
      cout << "(" << *f << ", " << *b << ")" << endl;
    }

However, in Ruby, aside from using weird callcc hacks, the best I can hope
for is to use collect or to_a or something to convert the data into an
array so that I can iterate through it.

Granted, this is not a very common case (I've actually never needed to do
it in Ruby), but it is a limitation of Ruby iterators.

Paul