APL/J言語:ディクショナリーの定義の読み方

APL/J言語:ディクショナリーの定義の読み方

ディクショナリーの項目の最初の行には行頭に単項動詞としての呼称、行末に二項動詞としての呼称が書いてあります。中央に正式な名前がありますが、正式な名前はアルファベット以外のキャラクター一文字だけのものと、それにピリオドやコロンがついているものとがあります。接続詞(conjunction)の場合、正式な名前の前にmとかuとか書いてあり、これはmが名詞、uが動詞の意味です。正式の名前のあとにnとかvとか書いてあるのも同様です。副詞の場合も正式な名前の前にmやuがありますが、あとにはなにもありません。


3つのランク(順に単項動詞としてのランク、二項動詞としての左側ランク、右側ランク)も書かれていて、シンボル_(アンダーバー、アンダーライン)は無限(制限なし)のランクを表します。引数の動詞に依存する場合は、mu、lv等と書かれています。


それぞれの定義について例が示されていますが、複雑なものついては見慣れない補助的な関数を導入して説明している場合があります。そのような例示については、関係する部分以外は無視して結構です。ただし実際に実行してみるためには部分をなしているフレーズを入力して、実行することが必要です。


例えば副詞/(スラッシュ)について、下記の文はいろんな例を示し、比較しているので便利です。

   x=: 1 2 3 4 5 [ y=: 7 5 3
   (,.x);(x+/y);y;(x*/y);(+/y);(*/y)
 +-+-------+-----+--------+--+---+
 |1| 8  6 4|7 5 3| 7  5  3|15|105|
 |2| 9  7 5|     |14 10  6|  |   |
 |3|10  8 6|     |21 15  9|  |   |
 |4|11  9 7|     |28 20 12|  |   |
 |5|12 10 8|     |35 25 15|  |   |
 +-+-------+-----+--------+--+---+

補助関数の;(セミコロン)や、,.(カンマドット)を知らなくても、ここでの効果は多分明らかだと思います。次の実験によってもさらにクリアになるでしょう。

   x;y                  
 +---------+-----+ 
 |1 2 3 4 5|7 5 3|
 +---------+-----+
   ,.7 8               

7
8
   $,.7 8
2 1

たとえば!:(エクスクラメーションコロン)にはフォリン(外部接続詞)という名前が提案されていますが、それ以外の名前も自由に使えます。エクスクラメーションマークはoの上にIを置いたものでラテン語のioを縮めたものからできていますので、joyという名前でもよいかもしれません。同様にi.(アイドット)の名前はinteger(整数)とかインデックスより、イオタとするのはどうでしょうか。