... | ... | @@ -7,6 +7,30 @@ This guide summarises the changes you may need to make to your code to migrate f |
|
|
|
|
|
## Compiler changes
|
|
|
|
|
|
### `PolyKinds` and `TypeInType` are pickier
|
|
|
|
|
|
|
|
|
GHC is now more diligent about catching illegal uses of kind polymorphism that snuck into recent GHC releases. For instance, this used to be accepted without `PolyKinds`:
|
|
|
|
|
|
```
|
|
|
classC a where
|
|
|
c ::Proxy(x :: a)
|
|
|
```
|
|
|
|
|
|
|
|
|
Despite the fact that `a` is used as a kind variable in the type signature for `c`. This is now an error unless `PolyKinds` is explicitly enabled.
|
|
|
|
|
|
|
|
|
Moreover, GHC 8.4 would accept the following without the use of `TypeInType` (or even `PolyKinds`!):
|
|
|
|
|
|
```
|
|
|
f:: forall k (a :: k).Proxy a
|
|
|
f=Proxy
|
|
|
```
|
|
|
|
|
|
|
|
|
Despite the fact that `k` is used as both a type and kind variable. This is now an error unless `TypeInType` is explicitly enabled.
|
|
|
|
|
|
---
|
|
|
|
|
|
## Library changes
|
... | ... | |