Opened 11 years ago

Closed 11 years ago

#2733 closed bug (duplicate)

Newtype deriving over phantom types broke between GHC 6.6.1 and GHC 6.8.1

Reported by: DavidA Owned by:
Priority: normal Milestone:
Component: Compiler Version: 6.8.3
Keywords: newtype deriving, phantom type Cc:
Operating System: Windows Architecture: x86
Type of failure: None/Unknown Test Case:
Blocked By: Blocking:
Related Tickets: Differential Rev(s):
Wiki Page:


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.

Change History (1)

comment:1 Changed 11 years ago by simonpj

difficulty: Unknown
Resolution: duplicate
Status: newclosed

Dup #2734.

Note: See TracTickets for help on using tickets.