IntelliJ IDEA Scalaプラグインのimplicit関連機能

IntelliJのScalaプラグインでよく使うimplicit関係の機能について。

code completion

f:id:kxbmap:20111215025757p:image
暗黙型変換によって使えるようになるメソッドも補完されます。また、それらには名前に下線が引かれます。
あるデータに対して何かやりたいとき、とりあえずimport scalaz._, Scalaz._して補完候補からそれらしい名前と型のメソッド探す、ということを自分は結構やります。Scalazなんてそんな感じで使えばいいと思うのです。

implicit conversion method

f:id:kxbmap:20111215025758p:image
Ctrl+Shift+Q でカーソル位置のオブジェクトを引数に取って呼び出すことのできるimplicitメソッドの一覧を表示します。メソッドを選択してEnterで定義元にジャンプします。
また、実際にその場所で暗黙型変換が行われている場合、使用されているメソッドが太字になります。ここではpureが定義されているのはmkIdentityによって変換されるIdentityだということが分かります。

actual implicit parameters

f:id:kxbmap:20111215025759p:image
Ctrl+Shift+P ではメソッドが取る暗黙的な引数について、実際に何が渡されているのかが表示されます。ここでもEnterでジャンプします。

def pure[F[_]](implicit p: Pure[F]): F[A] = p pure value

pureの定義はこうなっています。1.pure[List]という呼び出しでは、この implicit p には TraversablePure(の戻り値)が渡されているということです。
残念ながらTraversablePureに渡されるimplicit parameterを更に表示、ということは今のところできないようです。