Hi,

When migrating some code with type families to GHC 6.10, I frequently get the same error.

The deal is. If I define some type family and instance:

type family Rep (f :: * -> *) x :: *

data (g :+: h) x    = Inl (g x) | Inr (h x)
type instance Rep (g :+: h) x = Rep g x `Either` Rep h x


and then define a function that has a scoped argument:

test :: Rep (g :+: h) x -> y
test (Left x :: Rep (g :+: h) x) = undefined


I get the error:

 Pattern signature must exactly match: Rep (g :+: h) x
    In the pattern: Left x :: Rep (g :+: h) x
    In the definition of `test':
        test (Left x :: Rep (g :+: h) x) = undefined


Is this error expected? At least the error message is not clear...

Interestingly, when experimenting with a different functor, I get the impossible:

newtype Const t x   = Const {unConst :: t}
type instance Rep (Const t) x = t


test2 :: Rep (Const t) x -> y
test2 x = undefined


ghc: panic! (the 'impossible' happened)
  (GHC version 6.10.1 for i386-unknown-linux):
    readFilledBox x{tv aoB} [box]
Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug
>


Sorry for the extensiveness. Thanks,
hugo

--
www.di.uminho.pt/~hpacheco