From: "Peña, Botp" Date: 2002-11-28T11:43:21+09:00 Subject: Re: Things That Newcomers to Ruby Should Know (11/24/02) Hi Bill (aka William Djaja Tjokroaminata [mailto:billtj@y.glue.umd.edu]): You wrote to the point: > Dave Thomas wrote: > > My point was that you were giving the impression that the > lack of ++ > > for Fixnum was an implementation issue, and that alternative Ruby > > implementations might support it. Given that you produce a document > > aimed at newcomers, it was important to me that this > misunderstanding > > was cleared up. > > Well, as you already read, different people gave different > reasons why Fixnum#succ! is "impossible". Without the > concept of "immutability" being formally introduced in the > Ruby programming language, I can always give the reason from > the implementation point of view. (In theory, I can make > Fixnum to be mutable; whether this is good or bad is a different > story. Guido thought that strings should be immutable; Matz > thought otherwise. Python insists that hash keys be > immutable objects; Ruby allows any objects, with the > consequence of the need for "rehash" in certain situations.) > > Without any formal treatment of immutability in Ruby, your > previous post is the only reference that I can use if in the > future these questions are asked again: > > 1) Why Fixnum is immutable (no Fixnum#succ!) while String is > mutable (String#.succ! is provided)? > > 2) How do I know which objects/classes are mutable and > immutable? (Answer: just read all the methods, and if no "!" > methods are provided, it is immutable (?)) > Very clearly said. I hope your questions will be answered clearly and posted to faq. > Regards, > > Bill Best regards, -botp