APL/J言語:初めは足し算

初めは足し算だけがあったのだろうと思う。引き算は足し算の逆だし、掛け算は足し算の繰り返し。割り算は掛け算の逆。

   3 + 4
7
   7 - 4
3
   3 + 3 + 3 + 3
12
   3 * 4
12
   12 % 4
3

負の数という概念があります。売り値より仕入れ値が高いので赤字とか、儲けがマイナスとか。あるいは気温が氷点下マイナス10度を記録したとかをどう考えるかというときに負の数を用います。マイナスをJ言語で実験。

   - 4
_4
   -4
_4
   0 - 4
_4
   - 4 + 3
_7

中学校で初めてマイナスを習うとき、結構悩みました。「引き算」との混乱もあったと思うのですが、J言語では負の数の意味のマイナスは引き算の意味のマイナスと表記自体が違います。負の意味のときにはマイナス記号を使わずにアンダーバーを使います。<上記の実験について>
1.マイナスを単項動詞として使う場合(左右に引数を取らず、右側だけに引数がある場合)は、対象の符号を逆にした結果になる
2.マイナスに限って言えば、前後にスペースは要らないもよう
3.二項動詞として使う場合(左右に引数をとった場合)は左側から右側を引いた数を返す
4.演算は右側からやるので-4+3なら4+3の結果の7にマイナスを単項動詞として作用させ、結果は_7となる

うむ。こんな風に確認して行ったらどんなマニュアルになるのだろう。複素数についても書かなくてはいけないし、配列同士の演算についても書かなければいけない。マニュアルとしてはいいかもしれないが、一度にいろんなことを伝えるのは教育方針としてよろしくない。

今回の例では初めは足し算というのはそれなりに面白いアイデアであったが、そこからは負の数を言う前に四則演算の順序だの、配列の足し算だのが先にあるべきでしょう。負の数を言うのならさらっと表記の件だけを言えばいい。

さはさりながら、触りながら気づいたことを意識化しているといういわゆるインタラクティブな部分をとりこまないとテキストとして不完全だと思う。

とか考え中。