GADTs don't seem to unpack properly
Consider this simple code:
type family Foo a b
data Goof a b where
Goof :: !(Foo a b :~: Int) -> Goof a b
(:~:)
has just one constructor (Refl
) with no arguments, so I'd expect it to unpack to a void representation:
GoofConstr :: Foo a b ~N# Int => Goof a b
WGoof :: Foo a b :~: Int -> Goof a b
WGoof eq = case eq of Refl -> GoofConstr
But it doesn't seem to unpack at all.
Trac metadata
Trac field | Value |
---|---|
Version | 8.2.2 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |