Jディクショナリー第3章の翻訳です。
前章での%aでは%(パーセント、わる)がaに作用して結果を出していました。これは英語で動詞が名詞や代名詞に作用するというのと類似しています。これまで数学用語の関数という言い方をしてきましたが、今後は関数というだけでなく、動詞という言い方も併用していきます。
+/ 1 2 3 4という文は、1+2+3+4という文と同値です。副詞の/(スラッシュ)は動詞とくっついて新たな動詞を作り出し、引数1 2 3 4に作用しています。別の言い方をすれば左側引数に動詞をとり、新たな動詞となって右側引数1 2 3 4に作用しています。副詞の/(スラッシュ)の定義は左側の動詞を右側の変数のアイテムの間に挿入するという意味で、他のどんな動詞のあとにつけても同じ作用をします。
*/b=:2 7 1 8 2 8 NB.積 1792 <./b NB.最小値 1 >./b NB.最大値 8
副詞が作用した動詞は単項動詞の場合と二項動詞の場合があり、原始関数(動詞)の時と同様それぞれ違った意味を持ちます。副詞/(スラッシュ)の場合、単項動詞としては挿入(インサート)という意味で、二項動詞としてた作表(テーブル)の意味になります。
2 3 5 +/ 0 1 2 3 2 3 4 5 3 4 5 6 5 6 7 8
ここで、わかりやすくするために二つのユーティリティ動詞を作成します。
over=:({.;}.)@":@, by=:' '&;@,.@[,.]
これを使うと以下の様に/(スラッシュ)によるテーブル作成の様子が明確になります。
a=:2 3 5 b=:0 1 2 3 a by b over a+/ b +-+-------+ | |0 1 2 3| +-+-------+ |2|2 3 4 5| |3|3 4 5 6| |5|5 6 7 8| +-+-------+ b by b over b </ b +-+-------+ | |0 1 2 3| +-+-------+ |0|0 1 1 1| |1|0 0 1 1| |2|0 0 0 1| |3|0 0 0 0| +-+-------+
演習:
3.1 引き算と乗数の関数テーブルを作成するために、d=: i.5という変数と以下のふたつの文を作り、実行せよ。
st=: d-/d pt=: d^/d
結果:
d by d over st +-+-------------+ | |0 1 2 3 4| +-+-------------+ |0|0 _1 _2 _3 _4| |1|1 0 _1 _2 _3| |2|2 1 0 _1 _2| |3|3 2 1 0 _1| |4|4 3 2 1 0| +-+-------------+ d by d over pt +-+-------------+ | |0 1 2 3 4| +-+-------------+ |0|1 0 0 0 0| |1|1 1 1 1 1| |2|1 2 4 8 16| |3|1 3 9 27 81| |4|1 4 16 64 256| +-+-------------+
3.2 今まで学んだことを用いてさらに関数テーブルを作成せよ。
d by d over d </ d +-+---------+ | |0 1 2 3 4| +-+---------+ |0|0 1 1 1 1| |1|0 0 1 1 1| |2|0 0 0 1 1| |3|0 0 0 0 1| |4|0 0 0 0 0| +-+---------+ d by d over d =/ d +-+---------+ | |0 1 2 3 4| +-+---------+ |0|1 0 0 0 0| |1|0 1 0 0 0| |2|0 0 1 0 0| |3|0 0 0 1 0| |4|0 0 0 0 1| +-+---------+ d by d over d >/ d +-+---------+ | |0 1 2 3 4| +-+---------+ |0|0 0 0 0 0| |1|1 0 0 0 0| |2|1 1 0 0 0| |3|1 1 1 0 0| |4|1 1 1 1 0| +-+---------+ d by d over d <./ d +-+---------+ | |0 1 2 3 4| +-+---------+ |0|0 0 0 0 0| |1|0 1 1 1 1| |2|0 1 2 2 2| |3|0 1 2 3 3| |4|0 1 2 3 4| +-+---------+ d by d over d >./ d +-+---------+ | |0 1 2 3 4| +-+---------+ |0|0 1 2 3 4| |1|1 1 2 3 4| |2|2 2 2 3 4| |3|3 3 3 3 4| |4|4 4 4 4 4| +-+---------+
3.3 動詞|.(パイプドット、たてぼうドット)と|:(パイプコロン、たてぼうコロン)をいろんなテーブルに作用させ、結果をみて、動詞の意味を述べよ。
|. i.5 NB.|.(パイプドット、たてぼうドット)は逆順(リバース)の意味 4 3 2 1 0 1 |. i.5 NB.|.(パイプドット)は二項動詞としてはシフトの意味 1 2 3 4 0 2 |. i.5 2 3 4 0 1 |. i. 2 3 3 4 5 0 1 2 1 |. i. 3 3 3 4 5 6 7 8 0 1 2 |: i.3 3 NB.|:(パイプコロン、たてぼうコロン)は表のたてよこ入れ替え 0 3 6 1 4 7 2 5 8 1 |: i.3 3 NB.二項動詞としては入れ替える軸を変更できるもよう 0 1 2 3 4 5 6 7 8 0 |: i.3 3 0 3 6 1 4 7 2 5 8
3.4 トランスポーズ関数|:(パイプコロン、たてぼうコロン)は引き算テーブルは変化させるが、掛け算テーブルや足し算テーブルにはなんの変化も与えないように見える。たてよこの軸を入れ替えてもテーブルが変化しない性質をなんと呼ぶか。
答え:可換性(commutative)
3.5 d by d over d!/dを実行し、!(エクスクラメーションマーク)の二項動詞としての意味を述べよ。
答え:!(エクスクラメーションマーク)は2項係数(binomial coefficient)または組合せ(out of)関数である。3!5は5つのものから3つ選ぶ選び方の数を示す。
以上