> 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