From: William Djaja Tjokroaminata Date: 2002-11-28T05:09:17+09:00 Subject: Re: Things That Newcomers to Ruby Should Know (11/24/02) 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 (?)) Regards, Bill