In Java world, the naming conventions for interfaces are pretty much well established. For instance, when you say certain class implements the interface Comparable
, you can say that it's objects are comparable. However the naming conventions for typeclasses are not so well established. For example, Int
has a Numeric
implicit available, so you can say "Int
is a Numeric
type". But then there is typeclass Ordering
. I fail to see why this name was chosen. "Int
is an Ordering
type" doesn't make any sense. Perhaps it is supposed to be read as "Int
type has an Ordering
". Then there are Equal
and Show
in Scalaz. I totally have no idea why these names were chosen (apart from that they are so in Haskell.) I tried looking at Haskell, the mother language of typeclasses, for a good naming convention but found that there doesn't really exist any. Haskell guys don't really seem to care about names (That's what I gathered from the mailing list discussions). But coming from Java world, I do care about names. I am not quite able to get accustomed to "types say it all" paradigm.
The question is: What naming conventions do you follow, if at all you do, for naming the typeclasses?