APL/J言語:名詞(noun)

APL/J言語:名詞(noun)
名詞(noun)は3つの違ったやりかたで分類されます。
1.数字(ニューメリック)、リテラル、シンボル
2.オープンまたはボックス
3.いろんな次元(ランク)での配列
配列の要素となるアトムはひとつのクラス(数字、リテラル、シンボル、ボックス)に属します。配列で次元(ランク)が0、1、2のものはそれぞれアトム、リスト、テーブルと呼ばれます。また、数学ではスカラー、ベクトル、マトリックスと呼ばれます。同じものです。数字とリテラルはパートIで説明したように表現されます。シンボルについては動詞s:(エスコロン)のところで説明します。

配列(アレイ)。2.3や_2.3j5、または'A'や'+'のように一つで成り立っているものはアトムと呼ばれます。動詞,(コンマ)はアトムをつなげてリストを作ります。できあがったリストのシェイプ(動詞$(ドルマーク)によって確認できます)はアトムの数そのままです。

   $ date=: 1,7,7,6
4
   word=: 's','a','w'
   |. date 
6 7 7 1
   |. word
was

動詞|.(たてぼうドット、パイプドット、リバース)はリバースと呼ばれ、要素の順序を逆にします。フレーズs$bはリストbからシェイプsの配列を作成します。

   (3,4) $ date,1,8,6,7,1,9,1,7
1 7 7 6
1 8 6 7
1 9 1 7
   table=: 2 3$ word,'bat'
   table
saw
bat
   $table
2 3

名詞のシェイプのアトムの数をランクと呼びます。シェイプの一つ一つの位置を配列の軸(axis)と呼びます。軸は0, 1, 2, etc.というようにインデックスを振られています。例えば上記のtableの0軸は長さが2で、1軸は長さが3です。

配列bの最後のk軸がbのランクkセルまたはkセルを決定します。シェイプベクトルの他の要素はランクkのセルに関連してb1のフレームと呼ばれます。もし$cが2 3 4 5ならば、cのフレームはランク2についてはフレーム2 3であり、0セル(アトム)について言えばフレーム2 3 4 5といいます。4セルについては空のフレームです。

   ] b=:2 3 4 $ 'abcdefghijklmnopqrstuvwx'
abcd
efgh
ijkl

mnop
qrst
uvwx

このような配列について言えば、リストabcdはbの1セルであり、一つ一つの文字は0セルです。

bのランクの一つ少ない数のランクはbのアイテムと呼ばれます。アトム自身が一つのアイテムならばそれ自身です。例えば、動詞{(左ブレイス、左波かっこ、フロム)は右側の引数からアイテムを取り出す動詞ですので、次のようになります。

   0{b
abcd
efgh
ijkl
   1{b
mnop
qrst
uvwx
   0{0{b
abcd
   2 1{0{b
ijkl
efgh
   1{2{0{b
j
   0{3
3

動詞/:(スラッシュコロン、グレード、昇順並べ替え)は{(左波かっこ、左ブレイス、フロム)にインデックスを供給し、"レキシカル"順に並べることができます。下記の例を参照下さい。

      g=: /: n=: 4 3$3 1 4 2 7 9 3 2 0
      n
3 1 4
2 7 9
3 2 0
3 1 4
      g
1 0 3 2
      g{n
2 7 9
3 1 4
3 1 4
3 2 0

負の数字、_2セルとか_1セル(アイテム)によってセルを指定するとそのフレームは数字の絶対値に相当します。たとえば、上記の例のabcdは_2セルまたはbの1セルとして言及できます。

オープン、とボックス。ここまで議論した名詞はオープンです。「オープン」とは「ボックス」と区別するための言葉で、ボックスは<(小なり記号、ボックス)によって作成されます。ボックスの結果はアトムであり、ボックス化された名詞はボックスの中に示されます。ボックスではどんな配列(たとえば単語を示すような文字のリスト)でも一つの要素またはアトムとして取り扱えます。

   words=:(<'I'),(<'was'),(<'it')
   letters=: 'I was it'          
   $words
3
   $letters
8
   |. words
 +--+---+-+
 |it|was|I|
 +--+---+-+
   |. letters
ti saw I
   2 3$words,|.words
 +--+---+--+
 |I |was|it|
 +--+---+--+
 |it|was|I |
 +--+---+--+