#2733: Newtype deriving over phantom types broke between GHC 6.6.1 and GHC 6.8.1
-----------------------------------------------+----------------------------
    Reporter:  DavidA                          |       Owner:          
        Type:  bug                             |      Status:  new     
    Priority:  normal                          |   Component:  Compiler
     Version:  6.8.3                           |    Severity:  normal  
    Keywords:  newtype deriving, phantom type  |    Testcase:          
Architecture:  x86                             |          Os:  Windows 
-----------------------------------------------+----------------------------
 Consider the following code:

 {-# OPTIONS_GHC -fglasgow-exts -fallow-undecidable-instances #-}

 data Lex
 data Glex

 newtype Monomial ord = M [Int] deriving (Eq,Show)

 instance Ord (Monomial Lex) where
     compare (M xs) (M ys) = compare xs ys

 instance Ord (Monomial Glex) where
     compare (M xs) (M ys) = compare (sum xs, xs) (sum ys, ys)

 -- newtype Polynomial ord = P [Monomial ord] deriving (Eq,Show,Ord)
 newtype Polynomial ord = P [Monomial ord] deriving (Eq,Show)

 instance Ord (Monomial ord) => Ord (Polynomial ord) where
     compare (P ts) (P us) = compare ts us

 In 6.6.1, it was permissible to derive the Ord instance for Polynomial ord
 from the ord instance for Monomial ord - the commented out code would
 compile. In 6.8.1-3, the commented out code doesn't compile, so you have
 to do the derivation by hand, as shown.

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/2733>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to