APL/J言語:@(アトマーク、アトップ接続詞)

接続詞の@(アトマーク、アトップ接続詞)は二つの動詞からひとつの動詞を作りますが、ひとつ目を実行してからふたつ目を実行するのと同じ結果になります。次の例を見て下さい。

   TriplePowersOf2=: (3&*)@(2&^)
   TriplePowersOf2 0 1 2 3 4
3 6 12 24 48
   CubeOfDiff=: (^&3)@-
   3 4 5 6 CubeOfDiff 6 5 4 3
_27 _1 1 27
   f=: ^@-  NB.右側の関数が可能ならば二項動詞としてまず作用してから左側が単項動詞として作用する
   5 f 3
7.38906
   f 3
0.0497871
   g=: -@^
   5 g 3
_125
   g 3
_20.0855

接続詞は副詞と同様動詞より先に処理される。接続詞や副詞の左の引数は先行するすべての動詞フレーズである。したがって、上記の定義で使われているかっこのいくつかは不要である。

   COD=: ^&3@-
   3 4 5 6 COD 6 5 4 3
_27 _1 1 27
   TPO2=: 3&*@(2&^)
   TPO2 0 1 2 3 4
3 6 12 24 48
   tpo2=: 3&*@2&^   NB. @の右側には動詞しか許されないのでエラーとなる
domain error
tpo2=: 3&*@2&^
演習: 8.1 下記のプログラムの意味を述べよ。また意味からプログラムを作成せよ。
   mc=: (+/%#)@|:  NB.テーブルの行方向のコラムの平均
   ]a=:i.2 3
0 1 2
3 4 5
  mc a 
1 4
   f=: +/@(^&2)    NB.リストの二乗の合計
   f 1 2 3
14
   g=: %:@f        NB.リストの幾何学的長さ(直角三角形の斜辺の長さ)
   g 1 2 3 4
5.47723
   %:@(+/@(^&2)) 3 4
5
   %:@(+/@(^&2)) 1 3^0.5
2

   h=:{&' *'@(