From: Masahiro TANAKA Date: 2003-07-23T11:04:33+09:00 Subject: [ruby-dev:20805] Re: complex.rb At Wed, 23 Jul 2003 03:19:16 +0900, 石塚圭樹 wrote: > > >|# でも, こんな修正が必要になるのも ** が coerceメカニズムを導入してい > >|# ないからではないかと... えーと、** は coerce を使っているのではないんでしょうか? Fixnum#** を complex.rb で再定義しなくても、 2**Complex(2) => Complex(4.0, 0.0) となります。それとももっと別の話ですか? > Complexの場合は, 実数の世界だけだとエラーになるような演算 > (ex. -1**(1/2))が複素数の世界ではエラーにならないので, 値域を拡張して > います. つまり, 演算そのものの再定義が必要なので, だめですね... > > むかし, 定義域と値域を含めたcoerceの拡張の提案があったような気がします > が... むかし、complex.rb で Float#** を再定義して、 (-2)**0.5 #=> Complex(8.659560562e-17, 1.414213562) とするように提案したんですが、石塚さんに却下されました。^^; とりあえず再定義しなくても大きな問題はないので、 安定版では**の再定義は削除してもよいと思うんですが、いかがでしょうか。 田中昌宏