... | ... | @@ -24,6 +24,29 @@ Will not typecheck if `StarIsType` is enabled, since `m * n` is treated as if on |
|
|
1. Use `*` qualified (e.g., `Proxy (m GHC.TypeLits.* n`). This approach is compliant with the GHC three-release policy, as it does not require CPP to support older GHCs.
|
|
|
1. Enable the `NoStarIsType` extension. Since `(No)StarIsType` did not exist on older GHCs, this approach will require CPP in order to support older compilers.
|
|
|
|
|
|
### `MonadFailDesugaring` by default
|
|
|
|
|
|
|
|
|
GHC now enables the `MonadFailDesugaring` extension by default, as discussed in [ https://prime.haskell.org/wiki/Libraries/Proposals/MonadFail\#Transitionalstrategy](https://prime.haskell.org/wiki/Libraries/Proposals/MonadFail#Transitionalstrategy). This means that code that uses partial pattern matches in `do`-notation, such as this:
|
|
|
|
|
|
```
|
|
|
f::[[a]]->[a]f l =do(_:xs)<- l
|
|
|
xs
|
|
|
```
|
|
|
|
|
|
|
|
|
Will now desugar to use the `fail` method from the `MonadFail` class instead of from `Monad`. That is, this code will now desugar to something resembling:
|
|
|
|
|
|
```
|
|
|
importControl.Monad.Failas Fail
|
|
|
|
|
|
f::[[a]]->[a]f l =case l of(_:xs)-> xs
|
|
|
_->Fail.fail "Pattern-match failure"
|
|
|
```
|
|
|
|
|
|
|
|
|
Depending on the code, it is possible that this change will result in breakage. See [ https://prime.haskell.org/wiki/Libraries/Proposals/MonadFail\#Adaptingoldcode](https://prime.haskell.org/wiki/Libraries/Proposals/MonadFail#Adaptingoldcode) for ways to adapt to breakage.
|
|
|
|
|
|
### Constructor-less GADTs now require `GADTSyntax`
|
|
|
|
|
|
|
... | ... | |