J言語では有理数をあつかえてとても気持ちがいいのですが、このときx:(エックスコロン、extended precision)という動詞を使います。
2 % 3 0.666667 x: 2 % 3 2r3
ここで2r3とかが分数(fraction)です。分数のままで普通の計算ができます。自動的に約分されて便利です。
4r5 + 2r3 22r15 22r15 - 5r12 21r20
とは言え、逆に分数を小数にしたいときもあって、どうやるのか不思議に思っていました。
21r20 21r20 21 % 20 1.05
というようrに%で割れば、デフォルトは小数なので小数(decimal)になりますが、専用の動詞はなさそうです。そんな風に考えていて、思いついたのが関数の逆関数を作る副詞が使えないかということです。^:_1(キャレットコロンマイナスいち)というのを動詞の後に付けるとその前の動詞(関数)の逆関数になる。マイナス1のところをプラスの数字、2とか3とかにするとその前の動詞を何度も繰り返して作用させるので^:(キャレットコロン)はパワー(自乗)と呼ばれます。やってみたところうまく行きました。
x:^:_1 (2r3) 0.666667 (x:^:_1) 2r3 0.666667 x:^:_1 2r3
domain error |
x:^:_1 2r3 |
_1 x: 2r3 0.666667 2 x: 2r3 2 3二項動詞として左側引数に2を使った場合は、分子と分母を入れたベクトルを返すようです。 以上