merge up to ghc HEAD 16-Apr-2011
[ghc-hetmet.git] / docs / users_guide / glasgow_exts.xml
index a193088..9ea3332 100644 (file)
@@ -2434,7 +2434,8 @@ declarations.  Define your own instances!
 <sect2 id="gadt-style">
 <title>Declaring data types with explicit constructor signatures</title>
 
-<para>GHC allows you to declare an algebraic data type by 
+<para>When the <literal>GADTSyntax</literal> extension is enabled,
+GHC allows you to declare an algebraic data type by
 giving the type signatures of constructors explicitly.  For example:
 <programlisting>
   data Maybe a where
@@ -5725,9 +5726,6 @@ for rank-2 types.
 <sect2 id="impredicative-polymorphism">
 <title>Impredicative polymorphism
 </title>
-<para><emphasis>NOTE: the impredicative-polymorphism feature is deprecated in GHC 6.12, and
-will be removed or replaced in GHC 6.14.</emphasis></para>
-
 <para>GHC supports <emphasis>impredicative polymorphism</emphasis>, 
 enabled with <option>-XImpredicativeTypes</option>.  
 This means
@@ -5850,7 +5848,7 @@ signature is explicit.  For example:
   g (x:xs) = xs ++ [ x :: a ]
 </programlisting>
 This program will be rejected, because "<literal>a</literal>" does not scope
-over the definition of "<literal>f</literal>", so "<literal>x::a</literal>"
+over the definition of "<literal>g</literal>", so "<literal>x::a</literal>"
 means "<literal>x::forall a. a</literal>" by Haskell's usual implicit
 quantification rules.
 </para></listitem>
@@ -5886,7 +5884,7 @@ type variables, in the annotated expression.  For example:
 <programlisting>
   f = runST ( (op >>= \(x :: STRef s Int) -> g x) :: forall s. ST s Bool )
 </programlisting>
-Here, the type signature <literal>forall a. ST s Bool</literal> brings the 
+Here, the type signature <literal>forall s. ST s Bool</literal> brings the 
 type variable <literal>s</literal> into scope, in the annotated expression 
 <literal>(op >>= \(x :: STRef s Int) -> g x)</literal>.
 </para>
@@ -8919,7 +8917,7 @@ An example will give the idea:
 </para>
 
 <programlisting>
-  import Generics
+  import Data.Generics
 
   class Bin a where
     toBin   :: a -> [Int]
@@ -8939,7 +8937,7 @@ An example will give the idea:
 <para>
 This class declaration explains how <literal>toBin</literal> and <literal>fromBin</literal>
 work for arbitrary data types.  They do so by giving cases for unit, product, and sum,
-which are defined thus in the library module <literal>Generics</literal>:
+which are defined thus in the library module <literal>Data.Generics</literal>:
 </para>
 <programlisting>
   data Unit    = Unit
@@ -8961,14 +8959,16 @@ where clause and over-ride whichever methods you please.
       <para>To use generics you need to</para>
       <itemizedlist>
        <listitem>
-         <para>Use the flags <option>-fglasgow-exts</option> (to enable the extra syntax), 
-                <option>-XGenerics</option> (to generate extra per-data-type code),
-                and <option>-package lang</option> (to make the <literal>Generics</literal> library
-                available.  </para>
+         <para>
+            Use the flags <option>-XGenerics</option> (to enable the
+            extra syntax and generate extra per-data-type code),
+            and <option>-package syb</option> (to make the
+            <literal>Data.Generics</literal> module available.
+          </para>
        </listitem>
        <listitem>
-         <para>Import the module <literal>Generics</literal> from the
-          <literal>lang</literal> package.  This import brings into
+         <para>Import the module <literal>Data.Generics</literal> from the
+          <literal>syb</literal> package.  This import brings into
           scope the data types <literal>Unit</literal>,
           <literal>:*:</literal>, and <literal>:+:</literal>.  (You
           don't need this import if you don't mention these types