User's Guide: forall is a keyword nowadays
authorVladislav Zavialov <vlad.z.4096@gmail.com>
Fri, 22 Feb 2019 13:51:48 +0000 (16:51 +0300)
committerVladislav Zavialov <vlad.z.4096@gmail.com>
Thu, 21 Mar 2019 07:47:44 +0000 (10:47 +0300)
docs/users_guide/bugs.rst
docs/users_guide/glasgow_exts.rst

index 96cdd25..c563083 100644 (file)
@@ -42,6 +42,13 @@ Lexical syntax
    as a single qualified operator rather than the two lexemes ``M`` and
    ``.\``.
 
+-  ``forall`` is always a reserved keyword at the type level, contrary
+   to the Haskell Report, which allows type variables to be named ``forall``.
+   Note that this does not imply that GHC always enables the
+   :ghc-flag:`-XExplicitForAll` extension. Even without this extension enabled,
+   reserving ``forall`` as a keyword has significance. For instance, GHC will
+   not parse the type signature ``foo :: forall x``.
+
 .. _infelicities-syntax:
 
 Context-free syntax
index b46196e..a5e8127 100644 (file)
@@ -2236,9 +2236,10 @@ The following syntax is stolen:
     .. index::
        single: forall
 
-    Stolen (in types) by: :extension:`ExplicitForAll`, and hence by
-    :extension:`ScopedTypeVariables`, :extension:`LiberalTypeSynonyms`,
-    :extension:`RankNTypes`, :extension:`ExistentialQuantification`
+    Stolen (in types) by default (see :ref:`infelicities-lexical`). ``forall`` is
+    a reserved keyword and never a type variable, in accordance with `GHC Proposal #43
+    <https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0043-forall-keyword.rst>`__.
+
 
 ``mdo``
     .. index::
@@ -10085,9 +10086,6 @@ in :ref:`data-instance-declarations`, :ref:`type-instance-declarations`,
 
 Notes:
 
-- With :extension:`ExplicitForAll`, ``forall`` becomes a keyword; you can't use ``forall`` as a
-  type variable any more!
-
 - As well in type signatures, you can also use an explicit ``forall``
   in an instance declaration: ::