diff options
author | Vladislav Zavialov <vlad.z.4096@gmail.com> | 2019-05-09 01:53:26 +0300 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2019-05-14 16:41:19 -0400 |
commit | a5fdd185188fcda595fd712f90864ec7c20cdace (patch) | |
tree | d5e2864ea5c798e0950b84b635942cdf380cc97a /docs | |
parent | c72c369bcd56c74b745d90ee8f6acd12b430c65c (diff) | |
download | haskell-a5fdd185188fcda595fd712f90864ec7c20cdace.tar.gz |
Guard CUSKs behind a language pragma
GHC Proposal #36 describes a transition plan away from CUSKs and to
top-level kind signatures:
1. Introduce a new extension, -XCUSKs, on by default, that detects CUSKs
as they currently exist.
2. We turn off the -XCUSKs extension in a few releases and remove it
sometime thereafter.
This patch implements phase 1 of this plan, introducing a new language
extension to control whether CUSKs are enabled. When top-level kind
signatures are implemented, we can transition to phase 2.
Diffstat (limited to 'docs')
-rw-r--r-- | docs/users_guide/glasgow_exts.rst | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/docs/users_guide/glasgow_exts.rst b/docs/users_guide/glasgow_exts.rst index 5fef204831..bce2bf8370 100644 --- a/docs/users_guide/glasgow_exts.rst +++ b/docs/users_guide/glasgow_exts.rst @@ -9012,6 +9012,11 @@ do so. Complete user-supplied kind signatures and polymorphic recursion ---------------------------------------------------------------- +.. extension:: CUSKs + :shortdesc: Enable detection of complete user-supplied kind signatures. + + :since: 8.10.1 + Just as in type inference, kind inference for recursive types can only use *monomorphic* recursion. Consider this (contrived) example: :: @@ -9110,6 +9115,13 @@ example, consider :: According to the rules above ``X`` has a CUSK. Yet, the kind of ``k`` is undetermined. It is thus quantified over, giving ``X`` the kind ``forall k1 (k :: k1). Proxy k -> Type``. +The detection of CUSKs is enabled by the :extension:`CUSKs` flag, which is +switched on by default. When :extension:`CUSKs` is switched off, there is +currently no way to enable polymorphic recursion in types. In the future, the +notion of a CUSK will be replaced by top-level kind signatures +(`GHC Proposal #36 <https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0036-kind-signatures.rst>`__), +then, after a transition period, this extension will be turned off by default, and eventually removed. + Kind inference in closed type families -------------------------------------- |