Hi Bill (aka William Djaja Tjokroaminata [mailto:billtj@y.glue.umd.edu]):
You wrote to the point:
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:
Why Fixnum is immutable (no Fixnum#succ!) while String is
mutable (String#.succ! is provided)?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
···
Dave Thomas Dave@pragmaticprogrammer.com wrote: