APL/J言語:コンポジション(フックとフォークベース)

APL/J言語:コンポジション(フックとフォークベース)
動詞は2個、3個並べるだけであらたな動詞となります。その際の作用は、下記のようなダイアグラムで表されます。

         フォーク             フック
        g        g           g       g
       / \      / \         / \     / \
      f   h    f   h       y   h   x   h
      |   |   / \ / \          |       |
      y   y   x y x y          y       y

たとえば、5(+*-)3は、(5+3)*(5-3)となります。

上記は、ディクショナリーのセクションII Fに書かれています。以下の例は統計で使われる関数に関係します。

   mean=: +/%#   NB.平均(mean)
   norm=: ] - +/ % #  NB.平均からの乖離
   sqcm=: 2: ^~ ] - +/ % #  NB.平均からの乖離の二乗
   var =: [:    mean 2: ^~ ] - mean=: +/%#  NB.分散
   stdv=: 2:%:[:mean 2: ^~ ] - mean=: +/%#  NB.標準偏差
   ,.&.>@(];mean;norm;sqcm;var;stdv) y=: 2 3 4 5
 +-+---+----+----+----+-------+
 |2|3.5|_1.5|2.25|1.25|1.11803|
 |3|   |_0.5|0.25|    |       |
 |4|   | 0.5|0.25|    |       |
 |5|   | 1.5|2.25|    |       |
 +-+---+----+----+----+-------+