On Nov 4, 7:14     쮮 
> Hi --
>
>
>
> On Wed, 4 Nov 2009, Charles Oliver Nutter 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.
>
> It would, I think, be quite anomalous, since it would be the only case
> (that I can think of anyway) of an assignment expression that didn't
> look and feel like an assignment expression.
>
> I'm also not sure what problem it would be solving, other than adding
> to the "make <language> users feel at home in Ruby" effect. But I tend
> to think that Ruby should move away from, not towards, doing things
> for exclusively that reason.
>
> David
>
> --
> The    Į  Ǯ  ʮ
> Compleat Jan 22-23, 2010, Tampa, FL
> Rubyist  𺯯
>
> David A. Black/Ruby Power and Light, LLC (http://www.rubypal.com)

On Nov 4, 7:14 am, "David A. Black" <dbl... / rubypal.com> wrote:
> Hi --
>
>
>
> On Wed, 4 Nov 2009, Charles Oliver Nutter 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.
>
> It would, I think, be quite anomalous, since it would be the only case
> (that I can think of anyway) of an assignment expression that didn't
> look and feel like an assignment expression.
>
> I'm also not sure what problem it would be solving, other than adding
> to the "make <language> users feel at home in Ruby" effect. But I tend
> to think that Ruby should move away from, not towards, doing things
> for exclusively that reason.
>
> David

Hi David,

First,  Thank you for The Well-Grounded Rubyist. I study like other
pour over scriptures or the Koran.  Your topics are well chose,
beautifully explicated.  And Manning adding typesetting that enhanced
the your work.

I started this thread because some of your comments on page 54, e.g.
"The un-reference ..." were a blemish among your excellent analyses.
The fact that Robert Klemme, whom I also respect highly as a Rubyist,
agrees with you gives me pause.

But nevertheless,  I maintain that my corrected post of today refutes
such claims as "... any object that's represented as an immediate
value is always the same object."  Russel & Whitehead dealt with this
kind of issue perhaps a century ago when the defined the first Natural
Number, 1, as "the set of all sets that are in one-to-one
correspondence with the set containing the Null Set." Plato dealt with
this in The Parable of the Caves" with the claim that allegedly
concrete things were merely reflections of the "real" objects.

I'm not clamoring for a Ruby implementation.  I only posted my
analysis on this issue to get other people's opinions.  And I find it
hard compose a mistake free exposition, e.g. the last code lines in
yesterday evening's post:

a = 2**30-1; show (a) => Got 1073741823;  class = Fixnum;   object_id
= 2147483647;  v >> 1 = 1073741823
a = 2**30; show (a) => Got 1073741824;  class = Bignum;   object_id =
22737670;  v >> 1 = 11368835

should have read:

a = 2**30-1; show (a) => Got 1073741823;  class = Fixnum;   object_id
= 2147483647;  v >> 1 = 1073741823
show(a.pp)  =>  Got 1073741824;  class = Bignum;   object_id =
22738520;  v >> 1 = 11369260       # Of course, "v >> 1" is irrelevant
here

to make the point that "pp" crossed the Fixnum/Bignum boundary
smoothly.

Bottom line:  Please keep up you great work!  I appreciate it very
much!

Best wishes,
Richard