definline を使って Clojure でも配列を Java のように簡潔に扱えるようにします. 関数のような配列Clojure で配列を操作するコードは たとえば,二次元配列にアクセスする場合,Java なら a[i][j] で済むところが Clojure だと: (aget ^longs (aget ^objects a i) j) となります.Java と比べて長く,さらに読みにくいです. ここで,Clojure のコレクションが関数であることを思い出しましょう. たとえば,ベクタなら: user> (def v [1 2 3 4]) #'user/v user> (v 3) 4 のように,インデックスをキーとして要素にアクセスすることができます. これを配列にも適用して, Java の a[i][j] を (a i j) と書けるようにしましょうというのがこの記事の趣旨です.