けいじゅ@いしつかです.

In [ruby-dev :33820 ] the message: "[ruby-dev:33820] Re: rational,
complex and mathn ", on Feb/17 13:00(JST) Shin-ichiro HARA writes:

>原です。
>
>今までの rational.rb の意図を確認すると…
>
>  Rational::Unify が定義されているときは、Rational.new(1,1) で Integer
>  を返させたいのだが、スクリプトレベルではそれはできない。そこで、new
>  を禁止し、関数 Rational() を使わせる。そして、関数を用いた
>  Rational(1, 1) では、 Unify が定義されるときは、Rational でなく
>  Integer の 1 が返るようにする。これの仕組みで mathn.rb がスムーズに
>  機能する。
>
>という事ですよね。

あのぅ...

Rationalにnewがないのはそういう話ではなくて, もっと概念的な話です.

(Fixnumにも)Bignumにもnewはないのと同じで, Rationalにもnewは必要ないし,
あってはならないと考えました. つまり, 有理数というものは(概念的には)
ObjectSpace内に常に存在している. そして, Rational(a,b)ではオブジェクト
を生成しているわけではなくそれを参照しているという感覚です.

それよか, 有理数リテラルがあれば, newが必要という議論もなくなるんでしょ
うけど...

以下の表記なら可能性があると思いますが?

  %R(1 2)  #=> Rational(1,2)

%rと間違いやすいかなぁ... 
これはだめかな?

  %/(1 2)

そんなこと言わずに, やはり

  1/2 

がリテラルになってもらえれば(^^;


__
---------------------------------------------------->> 石塚 圭樹 <<---
---------------------------------->> e-mail: keiju / ishitsuka.com <<---