西川利男の本からですが、生徒ごとの平均点、教科ごとの平均点、総平均点を求めます。
+-+------------------+ | |国 数 英 理| +-+------------------+ |A|72 68 80 71 | |B|65 57 75 62 | |C|63 48 78 68 | |D|80 62 73 65 | |E|58 66 72 70 | |F|90 88 80 82 | |G|83 66 75 73 | |H|68 60 78 68 | +-+------------------+
seiseki 72 68 80 71 65 57 75 62 63 48 78 68 80 62 73 65 58 66 72 70 90 88 80 82 83 66 75 73 68 60 78 68 (+/ % #)"1 seiseki 72.75 64.75 64.25 70 66.5 85 74.25 68.5 (+/ % #) seiseki 72.375 64.375 76.375 69.875 (+/ % #), seiseki 70.75
もとの本はAPLで書かれているのですが、やってみたら断然J言語の方が簡単だし、筋が通っています。
テーブル(マトリックス)多次元の数列を扱う場合、どの次元に動詞を作用させるかが問題になります。テーブルで言えば縦の合計か横の合計かという問題です。縦、横と考えるからテーブルにしか使えない考え方になってしまいますが、J言語では数列を統一的に要素の集合と考えます。テーブルならばrow(行、横)の集合がテーブル。3次元ならばテーブル(表)の集合が全体。まず"1とかのconjunction(接続詞)をつけないときはそのレベルで作用します。テーブルで言えば縦の合計、3次元ならば表の串刺し合計。"1とか"2とかをつけると順次そのレベルが上がっていってというか下がって行って、上記のように横の合計が取れるわけです。
最後の,(カンマ)は要素をatom(アトム)レベルで列挙する動詞です。
以上