つらつらと ruby-talk などを眺めていてふと目に付いたこれで、
(0..(10.0/0)).member?(4)
るっ、Ruby は 0 で割っても例外をあげないのか、ってか、range は無限大を扱えるのか…とちょっと驚いて試してみる。
1/0 #=> error 1.0/0 #=> Infinity 0..(1.0/0) #=> 0..Infinity
まあ、発端は 整数/整数 で分数も作れないヤツが生意気な(念のため、分数にならないのは、おそらく C 言語の int の挙動を模すという方針からくる仕様らしく、Ruby の機能的制約というわけではありません。require "mathn" すればできます)、と思ったところからなんで、とりたててどうこうってことはないんすけど、ね。
ところで、Squeak システムの Smalltalk ではどうなっているかと調べたら(調べないと分からないのかよ… orz)、こんなかんじでした。
1/0 "=> error " 1.0/0 "=> error " Float infinity "=> Infinity " 1 to: Float infinity "=> (1 to: Infinity) " (1 to: Float infinity) includes: 4 "=> true "