From: NISHIO Mizuho Date: 2002-06-15T22:54:56+09:00 Subject: [ruby-dev:17453] Re: blocks and local variables どうも西尾です。 Yukihiro Matsumoto wrote: >まつもと ゆきひろです > >In message "[ruby-dev:17450] Re: blocks and local variables" > on 02/06/15, Nishio Mizuho writes: > >|どのような母集団からどの程度の数のサンプルを取ってきて調べたら、 >|仕様変更の論拠となるか教えてもらえませんか。 > >多ければ多いほど説得力があるという以上にはなんとも。 > > 一応調べた結果を載せておきます。 下記のarchiveに含まれるスクリプト182個(setup.rbとinstall.rbは無視しまし た)の中で、 ブロックパラメーターを含むメソッドは106個あります。 このうちパラメーターが重なっているものは2つです。 重なっているメソッド2つは migemo-0.32/migemo.rb に含まれています。 # この二つは仕様変更があっても影響はない? codeconv-0.7.tar.gz guitest020218.tar.gz iconv-0.5.tar.gz migemo-0.32.tar.gz nplant-1.0.1.tar.gz rb-gsl-0.2.3.tar.gz rbison-0.0.7.tar.gz rdbrowse-0.2.tar.gz ruby-blowfish-0.2.tar.gz ruby-filename-0.1.tar.gz ruby-gsl-0.1.6.tar.gz ruby-newt-20020105.tar.gz ruby-tcpwrap-0.3.tar.gz rubyunit-0.5.4.tar.gz webfetcher-0.5.2.tar.gz wwwd-0_1.tar.gz パラメーターが重なっているメソッド def lookup0 compiler = RegexCompiler.new compiler.push(@pattern) compiler.push(@pattern.to_fullwidth) expand_kanas.each do |x| compiler.push(x) compiler.push(x.to_katakana) expand_words(@static_dict, x).each do |x| compiler.push(x) end end expand_words(@static_dict, @pattern).each do |x| compiler.push(x) end compiler.uniq compiler.optimize(@optimization) if @optimization compiler.regex end def lookup_user_dict compiler = RegexCompiler.new expand_kanas.each do |x| expand_words(@user_dict, x).each do |x| compiler.push(x) end end expand_words(@user_dict, @pattern).each do |x| compiler.push(x) end compiler.uniq compiler.optimize(@optimization) if @optimization compiler.regex end 私の方法の問題をあげると、 ○ 私が書いたスクリプトとあおきさんのripperの精度 ○ ブロックパラメーターの重なりを目で確認している ○ メソッドの中にないブロックを検証していない です。 >「これは確実」と思ったものでも、後でかなり文句が出ることが多 >いので、非互換な変更はそうとう抵抗があります。よっぽどうれし >いことがなければ、少々の欠点でも残すべきではないかと思ってい >ます。 > >|私はRAAに登録されている20のarchiveに含まれるRubyスクリプト + >|1.6に標準添付されているライブラリ で十分だと思っていますが、どうでしょう。 > >どうでしょう? > > どれほどサンプルを増やしも既存のスクリプトを検証するという方法では 根拠にならないということですか? -- NISHIO Mizuho e-mail gha@intrastore.cdc.com