#2734: 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/2734>
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