ニーモニックってなんだか懐かしい響きがあるな。昔機械語やアセンブラのことをニーモニックって言ってなかったっけ? APL/J言語もあのころの理論を引きずっているのかもしれません。
Jディクショナリーでは<(小なり、レスザン)などのプリミティブは使ってみて、意味を予想して確認する、という勉強法を薦めています。しかし英語圏の人のようにはいかないよね。<(小なり、レスザン)はいいけれど<.(小なりドット)の意味はレッサーオブ(つまりミニマム)と言われてもレッサーオブなんて初めて聞く英語だったりします。別にJ言語で英語の勉強をしたいわけではないのに、勉強させられている感じ。ま、いいとしましょう。
7<5 NB.小なり、Less than 0 NB.ゼロは真偽の偽(false)の意味 7<.5 NB.小なりドット、Lesser of 5 NB.小さいほうの数字を返す。文字列は不可 7>5 NB.大なり、Greater than 1 NB.1は真偽の真(true)の意味 7>.5 NB.大なりドット、Greater of 7 NB.大きいほうの数字を返す。文字列は不可 10^3 NB.^(カレット)は指数 1000 10^.1000 NB.^.(カレットドット)は対数(ログ) 3 7=5 NB.=(イコール)は同等性の真偽を返す 0 b=: 5 NB.=:(イコールコロン、アサイン、コピュラ)は代入 7<.b NB.代入後は使える 5 Min=: <. NB.動詞を代入できる power=: ^ gt=: > 10 power (5 Min 3) NB.5と3の小さいほう(3)だけ10をかける 1000
(演習:下記を試して考える)
a=:0 1 2 3 b=:3 2 1 0 a+b 3 3 3 3 a*b 0 2 2 0 a-b _3 _1 1 3 a%b 0 0.5 2 _ a^b 0 1 2 1 a^.b 0 _ 0 __ ab 0 0 1 1 (ab) 1 1 1 1 (ab) 1 1 1 1
コメント:
マイナス(ネガティブ)は_3(アンダーバーさん)のように表す。演算子のマイナスと区別する。アンダーバーは小数点が数字の一部であるように数字の一部である。
割り算は%(パーセント)でゼロで割った場合は無限大になりアンダーバーで表現される。
1を底としたログ2は無限大であり、3を底としたログ0はマイナス無限大である。マイナス無限大はアンダーバーを二つつなげて表現する。
5<7は真であり、1を返す。ジョージ・ブールは同じような記法を用い、さらに+(プラス)をorの意味のブール型演算子とした。J言語では+.(プラスドット)を用いて通常の足すの意味の+(プラス)と区別する。
Min=: <.の例のようにすべてのプリミティブ(原始関数)に名前を考えてつけてみよ。
以上