GHC leaks GHC.Prim.~# into type
data A a where
X :: A [xxx]
pattern X' = X
the inferred type of which is
>>> :info X'
pattern X' :: () => t GHC.Prim.~# [xxx] => A t
Casts use unlifted equality as I understand it, but lifted would present a nicer UI:
pattern X' :: () => t ~> [xxx] => A t
pattern X' = X
In my own code this means I get the following monster
pattern MkArr :: () => (GetTy a, GetTy b, GetTy t,
a GHC.Prim.~# 'Sca ('Number 'I32), b GHC.Prim.~# 'Sca a1,
t GHC.Prim.~# 'Arr a1, GetSca a1) => Exp a -> Id -> Exp b -> Exp t
Trac metadata
| Trac field | Value |
|---|---|
| Version | 7.10.3 |
| Type | FeatureRequest |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler (Type checker) |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |