まつもと ゆきひろです

これまた古い話題ですね。

In message "[ruby-list:28363] Re: i++ ????"
    on 01/02/28, toyofuku / juice.or.jp <toyofuku / juice.or.jp> writes:

|まつもとさん
|Date: Mon, 5 Feb 96 12:14:39 JST
|[ruby-list:126]
|> rubyでは「i++」とい
|> う文法はサポートしていません.
|  ...
|>  * ここで「i++」を実装するために変数をオブジェクト化するとい
|>    う選択肢も考えられないことはないが,たかが「i++」を実装す
|>    るだけのためにそれだけのことをするのは大げさな気がするし,
|>    言語の他の部分への影響も大きそうだ.
|
|  この「変数のオブジェクト化」と同じかもしれませんが、
|
|「変数、配列へオブジェクトが代入されるとき(メソッドコールで
|仮引数変数に渡されるときも含む)は下のような皮に包まれて代入
|され、逆に皮に包まれているものが eval されるときは皮が剥がれて
|中のオブジェクトが現れる」
|
|という解釈は可能でしょうか。(気に入る入らないはひとまず置いと
|いて矛盾や困ることが起きないかという意味で)

たぶん、あの時点で私が「変数のオブジェクト化」という言葉で考
えていたものとさして変わらないと思います。

ですから、

|>  * ここで「i++」を実装するために変数をオブジェクト化するとい
|>    う選択肢も考えられないことはないが,たかが「i++」を実装す
|>    るだけのためにそれだけのことをするのは大げさな気がするし,
|>    言語の他の部分への影響も大きそうだ.

というのが答えです。この「皮」モデルは

  * 実装が複雑になる
  * モデルが単純でなくなる
  * 実行速度が全体として落ちる

というような欠点が予想されますから。

|  組み込みのメソッドの再定義を監視していれば最適化の余地がある
|のではないかと考えているのですが無理でしょうか。++ だけでなく
|四則演算系、配列要素参照/代入も。

うーん、それだけの価値があるかどうかは謎ですねえ。とくにモデ
ルが複雑になるのは。「組み込みのメソッドの再定義を監視による
最適化の余地」そのものは時間と力があればやってみたいことでは
ありますが。

                                まつもと ゆきひろ /:|)