ふなばです。

>>> Tue, 9 Mar 1999 05:31:42 +0900 の刻に 「wakou」、すなわち
>>> wakou / fsinet.or.jp(Wakou Aoyama) 氏曰く

wakou> 引続き電車で例えると、各駅停車(step 1)と特急(step 10)では駅の数
wakou> (to_a.size)は変わりますが、これは駅の数(参照点)が変わるだけであり、距
wakou> 離(size)が変わるわけではありません。そして、方向については上り(step 正)
wakou> と下り(step 負)が有り得ると思われます。Range の大きさについては差その
wakou> ものではなく、その絶対値とするのが適切と思われます。

通過駅をどう考えるか、ということもありますが、僕はあくまでも、10..1 は、
大きさが  0 になると考えたいです。これが大きさ 10 だと言えるなら、方向
も自ずと決まるという話になります。そうすると、別個に step に正負がある
というのはヘンに思うんですけど。

もちろん、Range の大きさと、歩数とは関係ないということもできるかもしれ
ないですけど、それでは大きさの意味がないです。

wakou> step を利用しない限りは max..min の挙動が変わるだけですから、過去との
wakou> 互換性を持つ書き方をするには a < b のチェックを入れる程度になると思わ
wakou> れます。これは a < b のチェックせずにおまかせにする方が良くない書き方
wakou> と思われるので、良い方向での不便さでしょう。

このあたり、よくわからないのですけど、Range が step を利用しないことも
あるんですか? で、その場合は max..min の挙動が変る?

チェックせずに、おまかせにするのが良くないといわれますが、それは違うと
思いますよ。それも含めて論理を決めているんですよ。それを捨てるのは決定
的な違いで、 今現在の仕様からいっても、 僕の考えでも、10..1 を 10,9..1
のように解釈してもらおうとするほうが、望ましくないと思います。オマカセ
せずに、 upto、downto、step などを直接につかうべきでしょう。良い方向で
の不便さとは思いません。

> # この話は Enumerable と each にまつわる議論ともよく似ていると思う。

wakou> Enumerable の場合は each で実現出来る機能はどんどん採り入れてしまって
wakou> OK と思われますが、Range の場合は upto で実現出来るからといってそれが
wakou> Range にふさわしいとは限りません。

なんでもかんでも each を基本にしているのでは不足ではないか、という議論を
思いだしていました。

wakou> Enumerable は each 依存ですが、Range は upto 依存ではなく、単に Range
wakou> の実装に upto が利用されているというだけの関係と思われます。

いや、それは違うんじゃないですかね。マニュアルに書いてあるし、それを信
じて、クラスを書いている人もいます。

ふなば ただよし