APLでは丸にたてぼうやよこぼうの配列を逆順にしたり(reverse)、回転したり(rotate)、シフトしたり(shift)する動詞(関数)があります。
これがJ言語では|.(たてぼうドット、パイプラインドット)の役割です。また、前回紹介した"(クオート、ランクコンジャンクション、ランク接続詞)を利用することによってわかりやすくなっています。たぶん丸にたてぼうとよこぼうの両方の役割をひとつでカバーしていると思う。
]v=:4 5 3 2 6 4 5 3 2 6 |.v 6 2 3 5 4 ]m=:3 4$i.12 0 1 2 3 4 5 6 7 8 9 10 11 |.m 8 9 10 11 4 5 6 7 0 1 2 3 |."1 m 3 2 1 0 7 6 5 4 11 10 9 8
ちなみにマトリクスのたてよこを入れ替えたものを作る動詞(関数)は|:(パイプラインコロン、たてぼうコロン)です。
|:m 0 4 8 1 5 9 2 6 10 3 7 11
.(たてぼうドット、パイプラインドット)を二項動詞として使うと、左辺の数字分だけシフトします。マイナスだと右シフトです。 |
_1 |. 'abcdef' fabcde