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 | +--+---+--+