From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?= ) Date: 1998-03-10T21:25:41+09:00 Subject: [ruby-dev:1659] Re: [ruby-list:7057] Re: infinity けいじゅ@日本ラショナルソフトウェアです. In [ruby-dev :01657 ] the message: "[ruby-dev:1657] Re: [ruby-list:7057] Re: infinity ", on Mar/10 19:44(JST) Shugo Maeda writes: >前田です。 > >そろそろruby-devへ振ります。 ># ほんとはもっと前に振ろうと思ったんですけど忘れてました。 最近, ruby-listでもレベルの高い話しが多くてついていけない(^^;;; >|そちらはきっとInfは存在しないはずです. NaNは... この場合は例外かな... >|# 何かおかしいなぁ.... やはり, 例外ベースの方がいいんだろうか... > >Floatの時だけNaNが出てくるのはなんとなく変な感じもしますね。 ですね... >|あれれ. パッチ出ていたんですか(^^;;; メイルが多過ぎて全部読み切れてい >|ない... >すみません、[ruby-list:7029]に僕が書いたパッチのことです(^^; >一応、その部分だけ抜き出しておきます。 わざわざすいません. いただきました. >いっそのことFloatは特別扱いにして(ZeroDivisionErrorも含めて) >例外を上げないようにする、というのも手なのではないでしょうか。 > >あるいは > >Float.raise_infnan_error = true > >とした時だけ例外を上げるとか。 それもてですね. もう一度整理すると 1. 数学的な無限大を扱いたい 2. FloatのInf/Nanはどうするか? 3. rubyの標準の動作である例外との擦り合わせはどうするか? と3つ問題があることになるんですね. 標準の rubyは数値の演算の結果としてクラスが変わるってことがないんです よね. Integer op Integer => Integer Float op Float => Float 例えば, 1 / 2 => 0 になります. 例外は例外が発生する時だけです. このモデルはこのまま保った方が良いと思うので, そういう意味では Floatの 演算の結果としてInfが出るとしてもそれはFloatに閉じている方が良いと思い ます. 次に例外にすべきかInfのような定数を採用すべきかどうかですが, 例外にし た方が良いんじゃないかな... って気がしています. そのほうが, 現状のruby のモデルにあっていますし, InfとかNanとかに結論としてなった場合それなり の処理を書かなくてはならないはずですから, それならいっそのこと例外にし ちゃった方が良いのではと思います. ただし, Inf/Nanがあるとそれなりに結果が出るので, そういうことでも良い と思う人のために, 例外を出さないモードを用意するというのはどうでしょう か? # 前田さんの意見とは逆ですが... また, pack/unpackもありますしInf/Nanを判断するメソッドは必要でしょう. 最後に数学的な無限大ですが, Inf/Nanとは別にNumericかRealの下にクラスを 導入して定数として実装するというのはどうでしょう? __ ................................石塚 圭樹@日本ラショナルソフトェア... ----------------------------------->> e-mail: keiju@rational.com <<---