J 言語のプログラムでは、基本的にデータは右から左へ流れます。
monad は引数が右側に一つなので、右から左へデータを流すのは明らかですね。
一方 dyad は左右に引数がありますが、左の引数と右の引数は役割が異なることがあります 1。
- 右の引数は、monad の場合と同様に操作の対象のデータを表します。
- 左の引数は、verb の処理のパラメータを表します。
要するに右が主、左が従だということです。
例えば、{
(dyad) は配列から値を取り出す操作なので、右に配列を、左にインデックスを渡します。それに対して i.
(dyad) は対象の値に一致する要素のインデックスを返すので、右に値を、左に配列を渡します。
逆に言えば、左右の引数が何を要求しているかによって、その verb が何に着目した処理なのかを (ある程度) 知ることができます。
J 言語に慣れてきたら、こういった視点で見てみるのも面白いかもしれません。
[ 目次 ]
-
必ずしも全ての verb に当てはまるわけではありません。
+
などは左右の引数の意味に差がありません。 ↩