From: NISHIO Mizuho Date: 2002-06-16T10:00:37+09:00 Subject: [ruby-dev:17459] Re: blocks and local variables どうも西尾です。 Yukihiro Matsumoto wrote: >まつもと ゆきひろです > >|どれほどサンプルを増やしも既存のスクリプトを検証するという方法では >|根拠にならないということですか? > >うーん、あんまり真面目につきつめられても困っちゃうのですが、 >互換性のない変更については、それはバグが原因である場合には遠 >慮なく変更できるのですが、今回のようなもともとは意図していた >挙動の場合には、 > > * その変更が妥当であるか > >という理論上の見地からと > > * その変更がどのくらい影響があるのか > >という実際的な見地の両方が必要だと思います。で、今回の変更は >実は前者についてもつめきってないと思います。 > > 私は主に http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/17276 からの議論しか読んでいないのですが。 すでにruby-list, ruby-devでブロックパラメーターの局所化 の要望は何回か出ているので、これに関しては同意が得られていると思っています。 問題は上記の要望を満たすための変更方法です。 その方法を大まかに分けると、 ○ 互換性を無視する方法 ○ 互換性を維持するような方法 の二つが出ています。最近の議論を読む限りでは 過去にまつもとさんが互換性を必須としたい意見を出している(?)ために バイアスがかかって、前者に関する議論がほとんどされていない気がします。 私の予想ですが、まつもとさんが互換性を重視したのは 互換性を無視することでどの程度の影響があるか 見積もることができなかったからではないでしょうか? 私と立石さんはブロックパラメーターの重なりが ほとんどないと見積もっていますので、 もう一度互換性を無視した方法に関して議論してほしいと思います。 >|一応調べた結果を載せておきます。 >| >|下記のarchiveに含まれるスクリプト182個(setup.rbとinstall.rbは無視しまし >|た)の中で、 >|ブロックパラメーターを含むメソッドは106個あります。 >|このうちパラメーターが重なっているものは2つです。 >|重なっているメソッド2つは migemo-0.32/migemo.rb に含まれています。 > >パラメータが重なっているだけでなく、パラメータがローカル変数 >でない場合も含める必要があるのではないでしょうか。 > > 大域変数、クラス変数、インスタンス変数がブロックパラメーターとして 使われているメソッドは一つもありませんでした。 # ローカル変数以外をブロックパラメーターとして使えることが # 広く認識されていないという結果なのではないでしょうか? -- NISHIO Mizuho e-mail gha@intrastore.cdc.com