"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 |