Just as types classify terms, kinds classify types. But while we have polymorphic types, kinds were previously monomorphic.
This meant that we were not able to abstract over kinds, leading for instance to a proliferation of proxy types:
data Proxy (a :: Type) = Proxy
data SProxy (a :: Symbol) = SProxy
data RProxy (row :: # Type) = RProxy
data RLProxy (row :: RowList) = RLProxy
Now we can have a single proxy type, whose parameter has a polymorphic kind.
Type :: Type
The old Kind data type and namespace is gone. Kinds and types are the same and exist in the same namespace.
Previously one could do:
foreign import kind Boolean
foreign import data True :: Boolean
foreign import data False :: Boolean
Where the kind Boolean and type Boolean were two different things. This is no longer the case. The Prim kind Boolean is now removed, and you can just use Prim type Boolean in the same way. This is a breaking change.
The compiler still supports the old foreign import kind syntax but it warns that it's deprecated.
foreign import kind Foo
Foreign kind imports are deprecated and will be removed in a future release. Use empty 'data' instead.
It is treated internally as:
data Foo
Note that foreign import data declarations are not deprecated. They are still necessary to define types with kinds other than Type since constructors are not lifted as in GHC with DataKinds.
Likewise, kind imports and exports are deprecated and treated the same as a type import or export.
Just as types classify terms, kinds classify types. But while we have polymorphic types, kinds were previously monomorphic.
This meant that we were not able to abstract over kinds, leading for instance to a proliferation of proxy types:
data Proxy (a :: Type) = Proxy
data SProxy (a :: Symbol) = SProxy
data RProxy (row :: # Type) = RProxy
data RLProxy (row :: RowList) = RLProxy
Now we can have a single proxy type, whose parameter has a polymorphic kind.
Type :: Type
The old Kind data type and namespace is gone. Kinds and types are the same and exist in the same namespace.
Previously one could do:
foreign import kind Boolean
foreign import data True :: Boolean
foreign import data False :: Boolean
Where the kind Boolean and type Boolean were two different things. This is no longer the case. The Prim kind Boolean is now removed, and you can just use Prim type Boolean in the same way. This is a breaking change.
The compiler still supports the old foreign import kind syntax but it warns that it's deprecated.
foreign import kind Foo
Foreign kind imports are deprecated and will be removed in a future release. Use empty 'data' instead.
It is treated internally as:
data Foo
Note that foreign import data declarations are not deprecated. They are still necessary to define types with kinds other than Type since constructors are not lifted as in GHC with DataKinds.
Likewise, kind imports and exports are deprecated and treated the same as a type import or export.
This version was pushed to npm by kl0tl, a new releaser for purescript since your current version.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot will not automatically merge this PR because this dependency is pre-1.0.0.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Automerge options (never/patch/minor, and dev/runtime dependencies)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
Bumps purescript from 0.13.8 to 0.14.0.
Release notes
Sourced from purescript's releases.
... (truncated)
Changelog
Sourced from purescript's changelog.
... (truncated)
Commits
89bdf56
Release v0.14.0 🎉 (#4014)788e906
Don't mention unknowns in unification errors when coercing misaligned rows (#...337e803
Erase elaborated kinds from all errors by default (#4007)f0d4660
Don't explain Coercible as a class with compiler-generated instances (#3999)41ec58a
Update the changelog with release notes for the upcoming v0.14 (#3994)e56d28b
[purs ide] Improves protocol errors from the ide server (#3998)d9bec8e
Extend ImportCompletion with declarationType (#3997)7ecc426
Only include direct dependencies in output for purs graph (#3993)781e940
Generate changelog and add PR template (#3989)d63cb81
Update version to 0.14.0-rc5 (#3976)Maintainer changes
This version was pushed to npm by kl0tl, a new releaser for purescript since your current version.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot will not automatically merge this PR because this dependency is pre-1.0.0.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language - `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com): - Update frequency (including time of day and day of week) - Pull request limits (per update run and/or open at any time) - Automerge options (never/patch/minor, and dev/runtime dependencies) - Out-of-range updates (receive only lockfile updates, if desired) - Security updates (receive only security updates, if desired)