Proposal: Require OverlappingInstances for the most specific instance only

John Smith voldermort at hotmail.com
Tue Oct 26 15:41:58 EDT 2010


In the case of overlapping instance declarations, GHC currently requires the less specific instance to be compiled with 
OverlappingInstances for the more specific instance to be usable. This means that, for example, if you write

type ChessBoard = Array (Int,Int) Piece

there is no way to

instance Show ChessBoard where
     show board = ...

because Array is already an instance of Show, and was not compiled with OverlappingInstances.

http://hackage.haskell.org/trac/ghc/ticket/3877 requests that OverlappingInstances be required for only the most 
specific instance declarations, as suggested in the documentation. "Perhaps the rule should instead say that the 
overlapping instance declaration should be compiled in this way, rather than the overlapped one ... We are interested to 
receive feedback on these points."

SPJ offered to make this change, if the list users agree. (See comment 6.) Proposed deadline for discussion is 16th 
November.



More information about the Glasgow-haskell-users mailing list