I backed into type classes via Scala’s poor man implementation thereof. Thus it is illuminating to see them formulated as ML modules, even though I’m not particularly familiar with ML modules either.
Given the global nature of Haskell’s type classes, a limitation remedied by both this work and Scala’s implicits, I wonder what’s so poor about Scala’s approach. Are there things that are expressible with “real” type classes that are not expressible with implicits? Or maybe it’s just a matter of preserving the holy grail of perfect type inference.