うと と申します。

ruby 1.8.0 を使わせていただいております。

String の動作についてちょっと疑問があるので質問させてください。
(もし重複した質問がすでにございましたらすみません)

ruby 1.8.0 (2003-08-04) [i386-cygwin]
での動作です。

(1) % ruby -e "s = ARGV[0]; puts s.frozen?"
false

(2) % ruby -e "s = ARGV[0]; s << 'hoge'; puts s" foo
-e:1:in `<<': can't modify frozen string (TypeError)
        from -e:1

(3) % ruby -e "s = ARGV[0]; s += 'hoge'; puts s" foo
foohoge

--
という動作になっているのですが、これは仕様でしょうか?
仕様とすればどういった意図だと解釈すればよろしいですか?
( (2) の部分の frozen string はどの部分なのかよく分かりません )

よろしくお願いします。

--
 うと けいすけ <kuto / d-itlab.co.jp>