title: What is the naming convention for typeclasses in Scala?
body: <p>In Java world, the naming conventions for interfaces are pretty much well established. For instance, when you say certain class implements the interface <code>Comparable</code>, you can say that it's objects are comparable. However the naming conventions for typeclasses are not so well established. For example, <code>Int</code> has a <code>Numeric</code> implicit available, so you can say "<code>Int</code> is a <code>Numeric</code> type". But then there is typeclass <code>Ordering</code>. I fail to see why this name was chosen. "<code>Int</code> is an <code>Ordering</code> type" doesn't make any sense. Perhaps it is supposed to be read as "<code>Int</code> type has an <code>Ordering</code>". Then there are <code>Equal</code> and <code>Show</code> 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.</p>
  
  <p>The question is: What naming conventions do you follow, if at all you do, for naming the typeclasses?</p>