I earlier wondered, in regard to the use of implicits to achieve type-class-like functionality in Scala, “Given the global nature of Haskell’s type classes, a limitation remedied by … Scala’s implicits, I wonder what’s so poor about Scala’s approach.” This paper answered that question and more, with its long laundry list of things you can do with implicits, and how that compares with type classes. I love a good explanation by example(s).