まつもと ゆきひろです

In message "[ruby-math:00826] Re: -3**2 == 9 ?"
    on 03/01/09, masaki <GEC01122 / nifty.ne.jp> writes:

|  -1.5.floor ==  (-1.5).floor
|
|という仕様になっているとは知りませんでした。
|
|  -1.5.floor ==  -(1.5.floor)
|
|だと思っていました。
|
|-1.5 の floor だったら普通
|
| (-1.5).floor
|
|と書きそうな気がします。

実際には「-3」をひとかたまりに認識してこの優先順位を期待する
ケースはかなり多いのです。たぶん、これを変更すると誤動作する
プログラムは結構あると思います。

 -3**9

よりも確実に多いでしょう。

|絶対に譲れないというほどのことではないですが、
|
|  -3**2 == -9
|
|は不合理で
|
|  -3**2 == (-3)**2 
|
|であるべきだと考えて仕様を変更するのなら構いませんが、実装上の都合で
|かえるのは賛成しかねます。普通とは逆の仕様だと気付くまで無駄な時間を
|使わせることになりますので。

実装上の都合というよりも、矛盾を解消する良い方法がないと呼び
たい気持ちです。

お聞きしたいのですが、

   2
 -3  => 9

は譲れないだろうとして、「**演算子の優先順位が単項マイナスよ
りも強いべき」というのはそれほどこだわりのあることではないの
でしょうか。

                                まつもと ゆきひろ /:|)