まつもと ゆきひろです
In message "[ruby-list:35272] Re: ((1.2)..(3.4)).to_a"
on 02/05/27, Siena. <siena / cr.chiba-u.ac.jp> writes:
|つまり、n の属する集合は少なくとも全順序かつ離散的であって、
|この全順序で与えられる順番で数え上げられると思っているようです。
|この立場から考えると、連続な集合である (「次に大きい」という
|概念が成立しない) 実数を表そうとしている Float に対して
|#succ は定義できない/機能すべきではないのではないと思います。
同意します。
|(Ruby 組み込みの) Time に対しても同様の違和感を感じます。
|おまけに Time の場合には、差分が 0.01 秒か、1 日か、はたまた
|1 世紀なのか、まるで見当が付かないという問題もありますね。
Timeは「秒が単位(マイクロ秒は補助的)」という定義がありますか
ら、それほど問題ではないと思います。
|一方、今回の大元の Range はどういう「範囲」を表すものかというと、
|Enumeratable なので全ての要素を数え上げられる集合ですよね。
いやあ、そうとも限らない点が話をややこしくしている点ですよね。
Rangeは「数え上げられる範囲」が主ですが、「ここからここまで」
という範囲を表現する場合もありえるからです。Rubyでは目的によっ
て細かくクラスを分けるよりひとつのクラスにいろいろ詰め込む傾
向があります(大クラス主義)。
|Interval(仮) のように連続な区間も表せるように Range を
|拡張するというのもありえるとは思いますが、そうすると
|少なくとも #to_a は妥当な定義が与えられないような気がします。
「連続な区間を表現する場合には有意義な結果は与えられない」と
いうのは妥当な定義だと思います。
まつもと ゆきひろ /:|)