いよいよ J 言語の説明に入ります。まずは、数値の書き方と簡単な計算を見ていきましょう。
J では、REPL のプロンプトは半角スペース 3 つです。また、コメント (行コメント) は、なんと NB.
1 で始まります。最初は違和感があるかもしれませんが、すぐに慣れると思います。
数値リテラル
まずは整数。
0
0
1
1
12345
12345
正の数は、いたって普通の表記ですが、負の数は少し変わった書き方をします。
_1 NB. - (ハイフン) ではなく _ (アンダースコア)
_1
小数 (浮動小数点数) も、負の数の表現を除けば一般的な表記と同じです。
12.3
12.3
3e18
3e18
1.7e_9
1.7e_9
ただし、無限大は特殊です 2。
_ NB. 正の無限大
_
__ NB. 負の無限大
__
計算してみる
さて、数値を入力するだけではつまらないので、簡単な計算を試してみましょう。
2 + 3
5
2 - 3
_1
2 * 3
6
2 % 3 NB. 2 ÷ 3
0.666667
2 | 3 NB. 3 mod 2
1
割り算は /
ではなく %
を使うことに注意してください。また、剰余 |
の引数の順番も他の言語と異なります。
計算順序
次の 2 つの式を実行して、結果を比べてみましょう。
5 + 2 * 3
2 * 3 + 5
違う結果が表示されましたね。J には演算子の優先順位は なく、基本的に右から計算されます 3。左側を先に計算したい場合は括弧を使います。
(2 * 3) + 5
11
2 - (8 % 4) - 7 NB. 2 - ((8 % 4) - 7)
7
単項演算子
実は、上で紹介した +
等の記号は全て単項演算子としても使えます。
+5
5
-5
_5
%5 NB. 1/5
0.2
%
は逆数を表します。(%
が割り算なのでセットで覚えましょう。)
*
は符号を、|
は絶対値を返します。
*5 NB. _1 (負), 0, 1 (正)
1
*_5
_1
|5
5
|_5
5
単項演算子が混ざっても、「右から」のルールは適用されます。
2 * 3 - -5 NB. 2 * (3 - (- 5))
16
%5 - 2 NB. % (5 - 2)
0.333333
-|_7 NB. - (| _7)
_7
練習
下の式を、それぞれ結果を予想しながら実行してみましょう。
4 + |-3
--8 % %2
1 - 2 + 3 - 4 + 5
2 * 7 - 6 * 3
1 - 4 | 9 + 1
-(5 * 3) - 2
(*(1 - 3)) % _1
verb と noun
さて、ここでいくつかの用語を紹介します 4。J の用語の多くは文法用語から来ているので、一般的でない単語も使われます。そこで、可能な限り英語と日本語を併記することにしています。
+
等の演算子や他の言語の関数にあたるものを、J では verb (動詞) と呼びます。verb のうち、
- 単項演算子として使うものを monad
- 二項演算子として使うものを dyad
と言います 5。verb は常に右結合です。
verb に対して、数値等の いわゆる「値」は noun (名詞) と呼ばれます。
[ 前 : インストール ] [ 目次 ] [ 次 : 数値の配列 (ベクター) ]