APLでもJ言語でもデータを結びつけるのは,(カンマ)という動詞(関数)です。配列を連結するにはいろんなレベルの連結が考えられますが、J言語では"(クオート、ランクコンジャンクション、ランク接続詞)を使うことにより、若干わかりやすくなっています。
'abc' , 'def' abcdef ]a=:3 3$'abcdefghi' abc def ghi ]b=:3 3$'123456789' 123 456 789 a , b abc def ghi 123 456 789 a ,"1 b abc123 def456 ghi789 a ,"0 b a1 b2 c3 d4 e5 f6 g7 h8 i9
この様に縦横だけでなく、要素のレベルまで自在に連結できます。単項動詞としての,(カンマ)はラベルと言って、全体を一気にベクトルに変えてくれるので、連結したものを新たに配列に組み直すこともできます。
,(a ,"0 b) a1b2c3d4e5f6g7h8i9
ランクという概念で考えるより、たてとよこで考える場合は、,(カンマ)は縦連結,.(カンマドット)が横連結なので便利です。
a ,. b abc123 def456 ghi789
以上と別に,:(カンマコロン、ラミネート)という動詞があって、これはランクを増やして連結します。カンマとはちょっと考え方が違いますが、結構使われます。
(,a) ,: (,b) abcdefghi 123456789 a ,: b abc def ghi 123 456 789 a ,:"1 b abc 123 def 456 ghi 789 a ,:"0 b a 1 b 2 c 3 d 4 e 5 f 6 g 7 h 8 i 9
$(ドル、ダラー、シェイプ)で配列の形を確認すると、ランクが一段上がっていることが確認できます。
$( (,a) ,: (,b)) 2 9 $(a ,: b) 2 3 3 $(a ,:"1 b) 3 2 3 $(a ,:"0 b) 3 3 2 1