[#34988] BigFloat の to_i メソッドについて — Sako Hiroshi <sakoh@...2.so-net.ne.jp>
[#34989] mailing list archive? — maili31s@... (SugHimsi == SUGIHARA Hiroshi)
すぎむし。
[#34991] a = 4 ; p((a < 3) or (a > 5)) — Take_tk <ggb03124@...>
次のものがエラーになるのは何故なんでしょうか?
新井です。
たけ(tk)です。
まつもと ゆきひろです
newです.
[#35005] FILE_READPTR — Daisuke Aoki <dai@...>
青木@横浜です。
[#35028] win32.c 中の my* 関数について — 小西 弘将 <konishih@...6.so-net.ne.jp>
小西 弘将です。
なかだです。
小西 弘将です。
小西 弘将です。
こんにちは、なかむら(う)です。
なかだです。
小西 弘将です。
なかだです。
小西 弘将です。
小西 弘将です。
なかだです。
小西 弘将です。
なかだです。
[#35052] ruby_lib/html/ — Wakou Aoyama <wakou@...>
青山です。
まつもと ゆきひろです
にょにょると申します。(ここハンドル投稿ダメなのでしょうか?ダメなら本
青山です。
にょにょるです。オンラインではずっとこれを使っているので、これでいきま
青山です。
はじめまして。Siena. と申します。
青山です。
Siena.%なんだか毎度長いなぁ --; です。
[#35054] 「 Ruby/GTK プログラミング入門」 — Noritsugu Nakamura <nnakamur@...>
なかだです。
むとうです。
[#35058] Y Combinator — sinara@...
"Y Combinator" とは何かというと
続いて、ちょっと数学っぽい解釈をします。先の
At Sun, 12 May 2002 13:59:51 +0900,
At Sun, 12 May 2002 16:37:27 +0900,
[#35081] ISO 8601 と Time#wday — Take_tk <ggb03124@...>
Delphi の日付時刻ルーチンを Ruby にポートしようと思っているのですが、次
[#35087] Re: Y Combinator — 正木 功 <GEC01122@...>
正木です。
[#35102] ANNOUNCE: REXML のドキュメントの和訳を公開しました。 — Kouhei Sutou (須藤功平) <kou@...>
はじめまして、須藤です。
なひです。
須藤です。
なひです。
須藤です。
なかだです。
高橋征義です。
なひです。
なひです。
まつもと ゆきひろです
須藤です。
なひです。
Siena. です。
なひです。
[#35109] DOS プロンプトからリダイレクションつきの system — TOYOFUKU Chikanobu <toyofuku@...>
豊福です。
[#35113] Re: Marshallers summary — "NAKAMURA, Hiroshi" <nakahiro@...>
なかひろです。
[#35134] 朝、トーストを食べていると不意に — Shin-ichiro HARA <sinara@...>
「来年から Perl が高校の授業で必修になるってホント?」って
[#35207] tar.gz の展開 — "NAKANO Kouichi" <knuckle@...8.dion.ne.jp>
はじめまして、なかのともうします。
[#35215] ruby-shell-mode — "Shirai,Kaoru" <shirai@...1jp.com>
白井です。
[#35252] ((Time.now)..(Time.now+60)) — Take_tk <ggb03124@...>
たけ(tk)です。
[#35253] ((1.2)..(3.4)).to_a — Take_tk <ggb03124@...>
1.2..3.4 を配列にすると、その範囲に属しない整数「1」が含まれるという点に
まつもと ゆきひろです
たけ(tk)です。
Siena. です。
まつもと ゆきひろです
Siena. です。
青山です。
[#35264] HTML generation library — Wakou Aoyama <wakou@...>
青山です。
[ruby-list:35272] Re: ((1.2)..(3.4)).to_a
Siena. です。
▼ [ruby-list:35265] < Take_tk さん
》 むしろ単純に Float#succ を self+1 で定義して
》 24時間単位の Time クラスを作って実験してみました。これがよさげ。
ちょっと気持ち悪さを感じます。なぜかを考えてみました。
# とかやっているうちに、既にいろいろと意見が出てますね
個人的には、n.succ() というと「n の *次に大きい* 数」と感じます。
つまり、n の属する集合は少なくとも全順序かつ離散的であって、
この全順序で与えられる順番で数え上げられると思っているようです。
この立場から考えると、連続な集合である (「次に大きい」という
概念が成立しない) 実数を表そうとしている Float に対して
#succ は定義できない/機能すべきではないのではないと思います。
実際に Float#succ は定義されていませんし、先立って #to_i
されているという事ですが、むしろ、#succ を直接呼んでしまって
NoMethodError を上げては、とか思ってしまいました。 # 過激 ^^;?
(Ruby 組み込みの) Time に対しても同様の違和感を感じます。
おまけに Time の場合には、差分が 0.01 秒か、1 日か、はたまた
1 世紀なのか、まるで見当が付かないという問題もありますね。
一方、今回の大元の Range はどういう「範囲」を表すものかというと、
Enumeratable なので全ての要素を数え上げられる集合ですよね。
連続な (不可算な) 数を表そうとしている Float を放り込んでいる
/放り込めてしまっているという点に違和感を感じます。
これも、(float..float) の時点で ArgumentError を(以下略 ^^;;)。
たけ(tk) さんの案は、どちらかというと連続集合中の区間を表す
Interval クラス (仮名) みたいなものが担うものではないでしょうか。
その上で、Interval#step( unit ) みたいなのを定義する、と。
Numeric 以外にも適用しやすくするために、仮に first が単位元を返す
#unit と、step 単位で n 個先の値を返す #advance を持つと仮定します。
First#unit は 1.0、Float#advance は self + n * unit ですね。
# String#unit は 1、String#advance は succ( n * unit ) かもしれない
まぁ、いろいろとやり過ぎとは思いますが ^^;
def step( unit = first.unit() ) ## in class Interval
n = 0
while( ( val = first.advance( n, unit ) ) <= last )
yield( val )
n += 1
end
end
alias :each :step ## これは妥当かなぁ?
あと、(1..2) === 1.5 は ArgumentError となります (ruby 1.6.4) が、
Interval(仮) なら ( 1 <= 1.5 ) && ( 1.5 <= 2 ) という範囲の比較
として定義できるとか、開区間や半開区間も表せるようにできるとか、
それなりの意義はありそうに思います。
Interval(仮) のように連続な区間も表せるように Range を
拡張するというのもありえるとは思いますが、そうすると
少なくとも #to_a は妥当な定義が与えられないような気がします。
---
Siena. <mailto:siena@cr.chiba-u.ac.jp>