J言語で試行錯誤するとどんどん縦に長くなってしまいます。
一回で覚えればそれでもかまわないのですが、テキストにしてあとで思い出すのに使いたい場合、ボックスの表にしておくと便利です。
これもいろいろ試行錯誤しているのですが、例題を文字列にして、結果を".(クオートドット、ドゥー)で表示するといいと思う。
以下に例を示します。
a=:'2 4$5 6 7 8 9' b=:'2 2$1' a; b +-------------+-----+ |2 4$5 6 7 8 9|2 2$1| +-------------+-----+ (a; b),:(".a) ; ".b +-------------+-----+ |2 4$5 6 7 8 9|2 2$1| +-------------+-----+ |5 6 7 8 |1 1 | |9 5 6 7 |1 1 | +-------------+-----+
3列以上になっても同じ感じで作れます。
a=:'table' b=:'10*table' c=:'table+table' table=:2 3$5 6 7 8 9 10 (a;b;c) +-----+--------+-----------+ |table|10*table|table+table| +-----+--------+-----------+ (".a);(".b);".c +------+---------+--------+ |5 6 7|50 60 70|10 12 14| |8 9 10|80 90 100|16 18 20| +------+---------+--------+ (a;b;c),:(".a);(".b);".c +------+---------+-----------+ |table |10*table |table+table| +------+---------+-----------+ |5 6 7|50 60 70|10 12 14 | |8 9 10|80 90 100|16 18 20 | +------+---------+-----------+
行が多い場合で行ずつ作って縦に足す例。
a=:'';'Example';'Shape';'Rank' b=:'';'x';'$ x';'# $ x' c=:'scalar';6;'empty list';0 d=:'List';(4 5 6);3;1 e=:'Table';(i.2 3); 2 3; 2 f=:'Report';(i.2 3 4);2 2 3; 3 a,b,c,d,e,:f +------+-----------+----------+-----+ | |Example |Shape |Rank | +------+-----------+----------+-----+ | |x |$ x |# $ x| +------+-----------+----------+-----+ |scalar|6 |empty list|0 | +------+-----------+----------+-----+ |List |4 5 6 |3 |1 | +------+-----------+----------+-----+ |Table |0 1 2 |2 3 |2 | | |3 4 5 | | | +------+-----------+----------+-----+ |Report| 0 1 2 3|2 2 3 |3 | | | 4 5 6 7| | | | | 8 9 10 11| | | | | | | | | |12 13 14 15| | | | |16 17 18 19| | | | |20 21 22 23| | | +------+-----------+----------+-----+
Learning Jを読んでいたら、次のような例が載っていました。
p =: 4 1 $ 1 2 3 4 q =: 4 1 $ 3 0 1 1 2 3 $ ' p ' ; ' q ' ; ' p+q ' ; p ; q ; p+q +---+---+-----+ | p | q | p+q | +---+---+-----+ |1 |3 |4 | |2 |0 |2 | |3 |1 |4 | |4 |1 |5 | +---+---+-----+
なるほど、と思わないでもないですが、わたし的には、次のように書いた方がわかりやすい。
a=:' p ';' q ';' p+q ' b=:p;q;p+q a,:b