On Wed, Nov 4, 2009 at 1:58 AM, Charles Oliver Nutter <headius / headius.com> wrote: > Of course I had to jump in here. > > Yes, a++ and ++a could easily be rewritten by the parser into the > appropriate increment+set of a and the expression either returns the > incremented value or the non-incremented value. And I would like to > see that added. It doesn't fundamentally change the expectations of > the programmer, and it provides a one-character-shorter version of > a+=1. There's really no reason it shouldn't be added, because even in > Java or C, you are *never* modifying arbitrary references to that > value...you are *always* re-assigning the value a given variable > points to. > > This example: > > a = 1 > b = a > a++ > > Would cause exactly the same results in every language I've worked > with...b would be 1 and a would be 2. The ++ operator never modifies a > value, it modifies what value the variable has assigned to it. If it > were modifying a value, then using ++ to bump a pointer through memory > offsets would have horrible side effects for anyone else assigned that > pointer value. > > I have seen no convincing argument as to why ++ is not supported in Ruby. Certainly it could be implemented in an extension to the language as syntactic sugar much as += and it's family. But I maintain, that it can't be implemented as a method, any more than += or ||= could be. If Matz deigned to do such a language change, I'd certainly feel free to ignore it. <G> I can't help but think of Alan Perlis' quip that "syntactic sugar causes cancer of the semicolons" -- Rick DeNatale Blog: http://talklikeaduck.denhaven2.com/ Twitter: http://twitter.com/RickDeNatale WWR: http://www.workingwithrails.com/person/9021-rick-denatale LinkedIn: http://www.linkedin.com/in/rickdenatale