Labelled preorders and implicit coercions › Approaches to the diamond problem(s) in existing systems › Coherent type classes in Haskell [01HF]

Haskell employs a syntactic condition to ensure that type classes instances do not overlap, leading to a global coherence property. Practice in the Haskell community has shown that it is possible (but painful) to develop coherent hierarchies. Many advanced libraries will activate a language extension to allow overlapping instances, which renders the hierarchy incoherent.