APL/J言語:パーティション副詞

APL/J言語:パーティション副詞
配列の部分(パーティション)に動詞を作用させる際の副詞は\ \. /.があり、それぞれプレフィックス、サフィックスオブリークパーティションなどと呼ばれる。通常、+/(プラススラッシュ、合計)や*/(アスタリスクスラッシュ、積)、(+%)/(連続分数合計)等、算術的な関数と共にに使われます。またボックス化関数(<、小なり記号)が構造を明確にしますので、例を示します。

   a=: 2 3 5 7 11 [ t=: 1 2 1 */ 1 3 3 1  
   ,.&.>((+/\a) ; (+/\.a) ; ((+%)/\a) ; (+//.t);t)
 +--+--+-------+--+-------+
 | 2|28|      2| 1|1 3 3 1|
 | 5|26|2.33333| 5|2 6 6 2|
 |10|23| 2.3125|10|1 3 3 1|
 |17|18|2.31304|10|       |
 |28|11|2.31304| 5|       |
 |  |  |       | 1|       |
 +--+--+-------+--+-------+ 
   <\a
 +-+---+-----+-------+----------+
 |2|2 3|2 3 5|2 3 5 7|2 3 5 7 11|
 +-+---+-----+-------+----------+
   <\.a
 +----------+--------+------+----+--+
 |2 3 5 7 11|3 5 7 11|5 7 11|7 11|11|
 +----------+--------+------+----+--+
   

二項動詞的に使うと、\ \. /.はインフィクス、アウトフィクス、およびキー分類になります。

   3 <\ a
 +-----+-----+------+
 |2 3 5|3 5 7|5 7 11|
 +-----+-----+------+
   _3 <\ a
 +-----+----+
 |2 3 5|7 11|
 +-----+----+
   2<\.a
 +------+------+------+-----+
 |5 7 11|2 7 11|2 3 11|2 3 5|
 +------+------+------+-----+
   1 2 3 1 3 *//. a
14 3 55