From: matz@... (Yukihiro Matsumoto) Date: 2000-01-26T09:44:36+09:00 Subject: [ruby-dev:9024] Re: [ruby-math:00115] Re: precedence of ** まつもと ゆきひろです ruby-mathから持ってきました。演算子の結合強度の話です。 # もともとはruby-talkでの話がきっかけになってます。 In message "[ruby-math:00115] Re: precedence of **" on 00/01/26, GOTO Kentaro writes: |>よって -2**2 は (-2)**2 ではなく -(2**2) になります。 |> |>これって、私の感覚とは違うんですが、なんか事情があるんですか? |>FORTRANでそうだとか。 |お察しのとおりFORTRANが紙の上での書き方に合わせたのが起こり |です。確か。 | | b |-a を -a**b と書きたいわけですね。これでも違和感あります?? 違和感はあります。だって違う記法だもん。でも、理解は出来ます。 |それはそれとして、原則として -a.b は (-a).b と解釈してほしい |です。ruby-talk にも書いたけどあんまり反応できないかも。 ですよねえ。やっぱり日本語の方が楽なんでこっちに書いちゃいま すが、実際の「ほしい」はどの辺にあるんでしょうね。 -a.b => (-a).b -a**b => -(a**b) なんですかね、やっぱり。でもこれだと . の結合強度が . < -@ < ** ってことになりますね。こんなに強度をあげる必要があるんでしょ うか。これだと今の文法が通らなくなるのも困ります。 ゆうべ、. を演算子として優先度を定義する文法を試したら -a[5] = 6 a**b.foo = 22 とか foo{|a.foo| .. } とかが全滅しました。もうふたひねりくらい必要そうです。 まつもと ゆきひろ /:|)