Clojure の型ヒント (type hinting) とプリミティブヒント (primitive hinting) との違いを整理し,これら 2 つを同時に扱うヒントを紹介します. Clojure では Java メソッド呼び出しの際にパラメータに対して型ヒントをつけることができます.そして,メソッドのレシーバに型ヒントをつけたり,オーバーロードされたメソッドの引数に型ヒントをつけたりすることで,コンパイル時に実装を決定でき実行時のリフクレクションを避けることができます.これは,Clojure で Java と同等の実行速度を得るために必須の作業になります. たとえば,Long/getType は, getType(char ch)getType(int codePoint)の 2 つのシグニチャをもつので,型ヒント無しではコンパイル時に実装を決定できません. user=> (defn