6.動詞のお話

ここでは,動詞についてのお話です。
一般的なプログラミング言語でいう関数にあたるものは, Jでは"動詞"といいます。他にも変数と言わず"名詞"と言ったり, 私達がしゃべる言語と同様のいいかたをします。

動詞は単項動詞と2項動詞があります。 違いは,単項動詞は右側だけに引数を取るのに対して, 2項動詞は両側に引数を取ります。 しかし、動詞が2種類あると言うわけではなくて、 片側だけに取る使い方と、両側に取る使い方で、違いがあると言うことです。
具体例をみてみましょう。
前に2%3というのをやりました。J言語では%は、割算演算をするものです。 これは、%の両側にに数字があるので、%を2項動詞として使っていることになります。 この%を単項動詞として使うと、逆数の演算をします。

2%3
0.666667
%3
0.333333


これをみるとわかるように、定義されていれば、右側だけに引数を取っても 何らかの動作をします。
他には、*を単項動詞で使うと、引数の符号を返します。 まぁ、動詞は非常に多くあるので、ひとつひとつの説明はいずれする予定です。


7.計算順序

Jでは,右側から計算します。どういうことかというと、 9-4-7を計算すると、普通は-2ですが、Jでは12となります。 この仕組みは、9-(4-7)の計算をしているのです。
長くなっても、常に右側からです。通常の四則演算の優先順位は無視されます。 なので、2*3+4は、14になります。

2*3+4
14

ところで、Jでは、副詞もあります。代表的なものに、"/"があります。 これは、左側の動詞を数字の列にの間にひとつずつ入れていく副詞です。
a=:1 2 3 4 5 6 7 8 9
とすると、aには、(1,2,3,4,5,6,7,8,9)という列が代入されます。
このとき、
+/a
とすると、1+2+3+4+5+6+7+8+9という計算をします。便利ですね。 2章でやった例では、これをうまく利用しています。

では、もう少し難しい例をみてみましょう。 似たような例ですが、
-/a
の結果はどうなるでしょう?-43と思った人、まだまだです。 5だと思った人、あなたは、素晴らしい。
では、説明しましょう。
/は数字の間に動詞を入れます。なので、
1-2-3-4-5-6-7-8-9
となります。しかし、さらに、計算順序も考慮しないといけません。 つまり、これは、
1-(2-(3-(4-(5-(6-(7-(8-9)))))))
という計算をしているのです。 こう書くと複雑ですが、括弧を展開すると、
1+2-3+4-5+6-7+8-9
という計算になります。

短い計算でも、いろんな決まりごとがありますね。 とりあえず、計算は右から、ということを頭に入れておきましょう。 これを回避したいときには、括弧を使うとか、順番を入れ換えるなど、 工夫してみましょう。


Copyright(c) 2001 J推進本部 All Right Reserved.