Micheal Hill
Micheal Hill

Reputation: 1659

How can I 'discover' type classes/implicit values in the current scope?

I've made use of a few of scala's built-in type classes, and created a few of my own. However, the biggest issue I have with them at the moment is: how do I find type classes available to me? While most of those that I write are small and simple, it would be nice to know if something already exists that does what I'm about to implement!

So, is there a list, somewhere, of all the type classes or implicit values available in the standard library? Even better, is it possible to somehow (probably within the REPL) generate a list of the implicit values available in the current scope?

Upvotes: 1

Views: 145

Answers (1)

mirelon
mirelon

Reputation: 4996

It's a job for a good IDE.

IntellijIDEA 14+

Check out Implicits analyser in Scala Plugin 1.4.x. Example usage:

def myMethod(implicit a: Int) = {
}
implicit val a: Int = 1
myMethod // click the myMethod and press Ctrl+Shift+P, the "Implicit Parameters" is shown

Eclipse

Check out Implicit highlighting.

Scala REPL

You can list implicits like this:

:implicits -v

And investigate their origin like defined here:

import reflect.runtime.universe
val tree = universe.reify(1 to 4).tree
universe.showRaw(tree)
universe.show(tree)

Upvotes: 1

Related Questions