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