From: "David A. Black" Date: 2009-11-11T21:51:43+09:00 Subject: Re: Ruby doesn't implement x++ for Fixnum's because ??? Hi -- On Thu, 5 Nov 2009, RichardOnRails wrote: > 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. Thanks! > I started this thread because some of your comments on page 54, e.g. > "The un-reference ..." were a blemish among your excellent analyses. Oh dear -- the whole thread is my fault? :-) > 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." I'm afraid I don't see the refutation, but as per my previous post, the immediate value thing is only part of the picture. > 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. Well... any given system of symbolic representation may or may not take a Platonic view of things. Plato's allegory is of course of great importance in the history of thought, but it doesn't really dictate that 2000+ years later, there can't be a computer language with identifiers housing immediate values :-) > 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. You'll see a lot of people cutting-and-pasting entire shell sessions, like this: $ cat myfile.rb ... code here ... $ ruby myfile.rb ... output here ... which is a good way to ensure that your output is from your input. I rely a lot (depending on the example) on pasting things in and out of irb. > Bottom line: Please keep up you great work! I appreciate it very > much! I'll do me best :-) David -- The Ruby training with D. Black, G. Brown, J.McAnally Compleat Jan 22-23, 2010, Tampa, FL Rubyist http://www.thecompleatrubyist.com David A. Black/Ruby Power and Light, LLC (http://www.rubypal.com)