"Pattern match on GADT" error for non-GADT
It's widely known that GADTs are just generalizations of type equality and existentials. And you can declare them that way!
{-# LANGUAGE TypeFamilies, ExistentialQuantification #-}
module NonGADT where
data T a = (a ~ ()) -> T
But pattern matching on this gives a nasty error!
f :: T a -> a
f T = ()
{-
NonGADT.hs:7:3:
A pattern match on a GADT requires -XGADTs
In the pattern: T
In an equation for `f': f T = ()
-}
Trac metadata
Trac field | Value |
---|---|
Version | 7.0.4 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler (Type checker) |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |