Proposal: Require OverlappingInstances for the most specific instance only

Serge D. Mechveliani mechvel at botik.ru
Tue Nov 16 11:55:44 EST 2010


If it does not effect working programs,  
than I vote for  hackage.haskell.org/trac/ghc/ticket/3877
-- to apply this change for OverlappingInstances.

If it does effect, than I would like to have a special pre-release for 
testing and feeding back from users.

> [..] define further places where you say that you want an overlapping
> instance.

I compile all my (two) projects under
  MultiParamTypeClasses OverlappingInstances UndecidableInstances 
  FlexibleInstances FlexibleContexts

-- I put this to the line of `extensions' in the  *.cabal  file.
And this correlates in a certain way with the way in which GHC complies the 
library instances. 
Also I could try to set/skip   OverlappingInstances  to each module 
individually -- do not know, so far, whether I really need this.

-----------------
Serge Mechveliani
mechvel at botik.ru



On Tue, Nov 16, 2010 at 05:02:09PM +0100, Christian H?ner zu Siederdissen wrote:
> The change should not affect working programs, as it just allows you to
> define further places where you say that you want an overlapping
> instance.
> 
> Gruss,
> Christian
> 
> * Serge D. Mechveliani <mechvel at botik.ru> [16.11.2010 16:47]:
> > On Tue, Oct 26, 2010 at 09:41:58PM +0200, John Smith wrote:
> > > 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.
> > 
> > 
> > 
> > I always expected that such programs as above must be valid. 
> > On the other hand, I do not understand these possible ways of compilation, 
> > these words about "compiled in this way, rather than the overlapped one". 
> > Now, as I already have overlapping instances work in my programs, for a 
> > long time, it is difficult for me to predict the consequences of the 
> > change.
> > Can the team issue the corresponding GHC pre-release for testing,
> > without making a decision for future before the users report their 
> > impression?  



More information about the Glasgow-haskell-users mailing list