... | @@ -10,7 +10,7 @@ This guide summarises the changes you may need to make to your code to migrate f |
... | @@ -10,7 +10,7 @@ This guide summarises the changes you may need to make to your code to migrate f |
|
### `StarIsType`
|
|
### `StarIsType`
|
|
|
|
|
|
|
|
|
|
As part of [ this GHC proposal](https://github.com/ghc-proposals/ghc-proposals/blob/05721788de9ab6538def68c3c2c9dec50c9f24a8/proposals/0020-no-type-in-type.rst) (as amended by [ this GHC proposal](https://github.com/ghc-proposals/ghc-proposals/pull/146)), a new `StarIsType` extension was introduced, which instructs GHC to treat `*` as a synonym for `Type` (from `Data.Kind`) instead of a binary type operator.
|
|
As part of [this GHC proposal](https://github.com/ghc-proposals/ghc-proposals/blob/05721788de9ab6538def68c3c2c9dec50c9f24a8/proposals/0020-no-type-in-type.rst) (as amended by [this GHC proposal](https://github.com/ghc-proposals/ghc-proposals/pull/146)), a new `StarIsType` extension was introduced, which instructs GHC to treat `*` as a synonym for `Type` (from `Data.Kind`) instead of a binary type operator.
|
|
|
|
|
|
`StarIsType` is enabled by default, and one consequence of this is that GHC will interpret any use of `*` as `Type`, even if it would have been previously interpreted as a binary type operator. A notable example of such a binary type operator is `GHC.TypeLits.*`, so code like:
|
|
`StarIsType` is enabled by default, and one consequence of this is that GHC will interpret any use of `*` as `Type`, even if it would have been previously interpreted as a binary type operator. A notable example of such a binary type operator is `GHC.TypeLits.*`, so code like:
|
|
|
|
|
... | @@ -33,7 +33,7 @@ Will not typecheck if `StarIsType` is enabled, since `m * n` is treated as if on |
... | @@ -33,7 +33,7 @@ Will not typecheck if `StarIsType` is enabled, since `m * n` is treated as if on |
|
### `MonadFailDesugaring` by default
|
|
### `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:
|
|
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
|
|
f::[[a]]->[a]f l =do(_:xs)<- l
|
... | @@ -51,7 +51,7 @@ f::[[a]]->[a]f l =case l of(_:xs)-> xs |
... | @@ -51,7 +51,7 @@ f::[[a]]->[a]f l =case l of(_:xs)-> xs |
|
```
|
|
```
|
|
|
|
|
|
|
|
|
|
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.
|
|
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`
|
|
### Constructor-less GADTs now require `GADTSyntax`
|
|
|
|
|
... | | ... | |