Unify named wildcards in different type applications
I would like to use type application to specialize
Sub :: forall (a :: Constraint) (b :: Constraint). (a => Dict b) -> a :- b
Sub @(Ord _a) @(Eq _a) :: forall {a}. (Ord a => Dict (Eq a)) -> Ord a :- Eq a
and
map :: forall a b. (a -> b) -> [a] -> [b]
map @_a @_a :: forall {a}. (a -> a) -> [a] -> [a]
Is there a fundamental reason why named wildcards are not allowed to unify between type applications within the same expression? Documentation:
These are called named wildcards. All occurrences of the same named wildcard within one type signature will unify to the same type.
I don't know if this is intended.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 8.1 |
| Type | FeatureRequest |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler (Type checker) |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |