ふなばです。

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

wakou> 大きさ 0 はちょっと無理があると思います。距離でも角度でも重量、面積、
wakou> 速度、時間、等々、どの場合も Range が 0 というのは違和感がありますから。
wakou> そして、どの場合も正負両方向の参照が存在するのは自然だと思われます。

一般的な話としては、ある程度わかりますけど、Ruby の Range はそうでなく
ても良いかもしれないではないですか。どんな仕様が便利かを考えないと、議
論がおかしくなりそうです。あくまで、プログラミングのための方便だという
ことを確認したいです。

たとえば、 Ruby の Time は時間一般を説明するには、貧弱すぎるんですよ。
範囲だって、2点じゃ不十分かもしれないし、step があるというのもヘンかも
しれません。あまり、Range という名前にコダワり過ぎてもよくないと思いま
す。

wakou> ruby-dev:6096
> max..min を許容する場合 step を省略した場合の方向を a-->b とし、step
> の絶対値を 1 という感じです。(step が省略された場合は a 始点 b 終点の
> 鈍行という感じ)

wakou> という事で、step を省略した場合というのは for i in a..b のような場合です。
wakou> 方向を明示する場合は for i in (a..b).step(n) という感じですね。

なるほど、それは判りづらそうですねえ。

step はひとつの例ですが、 僕がこれを挙げたのは、読みかえはよくない、ど
うしても、それが必要なら、明示的にすることを考えたほうがよいといいたい
ためでした。そうしたほうが、判り易いし、互換性もそれなりに保たれる可能
性があると思ったからです。

読みかえアリ、step アリ、はヤリスギではないかと思います。

wakou> この件に関しては max..min についての結果が出た後でと思います。a..b に
wakou> とって a < b が必要条件であるかどうかという結果が出ない限りはそれに関
wakou> する挙動は決められませんから。

互換性に関りますから、ここは大事なところだと思うんですが。

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

wakou> おお、なるほど。そのような議論もありましたか。ですが、これもまた今回の
wakou> 場合とは異なると思われます。Enumerable は機能拡張の為の Mixin であり、
wakou> Enumerable というオブジェクトを生成する為のクラスではありませんから。

いや、そうじゃないでしょう。 Mixin かどうかは関係ありません。

# それに、Enumerable は機能拡張のためのもの、というのも違うと思いますよ。
# それはもっと本質的なものだと思います。だからモメるんです :-)

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

wakou> これは現在の事ですよね。step が導入された場合は当然ながら変更される事
wakou> になります。

そりゃそうでしょうけど...。

その前堤を手放すことは御法度でないけど、これはこれで故あることだし、そ
れを手放すことによる損失が問題にならないくらいの利益がなければ、ダメだ
と思います。これは議論の大前提だと思っていました。

ふなば ただよし