[snip]
> 4 is an unmodifiable object.  "Hello".chomp! is fine because "Hello" is a
> modifiable object.

Thanks, I'm understanding more now.  I guess that the next logical
question is why is 4 unmodifiable and "a" modifiable?  I don't see why a
string would be modifiable and a number not.

Just like you can say that the number 4 is set, and cannot be turned into
a 5, you can also say that the letter "a" is set and cannot be turned into
a "b".  Yet, I can write:

"a".gsub!(/a/,"b")

Isn't it then arbitrary to declare numbers unmodifiable but declare
strings modifiable?  Perhaps Matz has a good reason for this.

Daniel.