在Java世界中,接口的命名约定已经非常成熟.例如,当你说某个类实现了接口时Comparable
,可以说它的对象是可比较的.但是,类型类的命名约定并不是那么完善.例如,Int
有一个Numeric
隐式可用,所以你可以说" Int
是一个Numeric
类型".但是那时有类型类Ordering
.我不明白为什么选择这个名字." Int
是一种Ordering
类型"没有任何意义.也许它应该被解读为" Int
类型有一个Ordering
".然后有Scalaz Equal
和Show
.我完全不知道为什么选择这些名称(除了它们在Haskell中是这样的.)我试着查看类型的母语Haskell,以获得一个好的命名约定,但发现它确实没有.Haskell家伙似乎并不关心名字(这就是我从邮件列表讨论中收集的内容).但是来自Java世界,我确实关心名字.我不太习惯于"类型说出一切"的范例.
问题是:如果你做的话,你会遵循哪些命名约定来命名类型类?