Executive summary of our extensions:
</Para>
-<Para>
-<VariableList>
-
-<VarListEntry>
-<Term>Unboxed types and primitive operations:</Term>
-<ListItem>
-<Para>
-You can get right down to the raw machine types and operations;
-included in this are “primitive arrays” (direct access to Big Wads
-of Bytes). Please see <XRef LinkEnd="glasgow-unboxed"> and following.
-</Para>
-</ListItem>
-</VarListEntry>
-
-<VarListEntry>
-<Term>Type system extensions:</Term>
-<ListItem>
-<Para> GHC supports a large number of extensions to Haskell's type
-system. Specifically:
-</Para>
-
-<VariableList>
-<VarListEntry>
-<Term>Multi-parameter type classes:</Term>
-<ListItem>
-<Para>
-<XRef LinkEnd="multi-param-type-classes">
-</Para>
-</ListItem>
-</VarListEntry>
-
-<VarListEntry>
-<Term>Functional dependencies:</Term>
-<ListItem>
-<Para>
-<XRef LinkEnd="functional-dependencies">
-</Para>
-</ListItem>
-</VarListEntry>
+ <variablelist>
-<VarListEntry>
-<Term>Implicit parameters:</Term>
-<ListItem>
-<Para>
-<XRef LinkEnd="implicit parameters">
-</Para>
-</ListItem>
-</VarListEntry>
-
-<VarListEntry>
-<Term>Local universal quantification:</Term>
-<ListItem>
-<Para>
-<XRef LinkEnd="universal-quantification">
-</Para>
-</ListItem>
-</VarListEntry>
-
-<VarListEntry>
-<Term>Extistentially quantification in data types:</Term>
-<ListItem>
-<Para>
-<XRef LinkEnd="existential-quantification">
-</Para>
-</ListItem>
-</VarListEntry>
-
-<VarListEntry>
-<Term>Scoped type variables:</Term>
-<ListItem>
-<Para>
-Scoped type variables enable the programmer to supply type signatures
-for some nested declarations, where this would not be legal in Haskell
-98. Details in <XRef LinkEnd="scoped-type-variables">.
-</Para>
-</ListItem>
-</VarListEntry>
-</VarListEntry>
+ <varlistentry>
+ <term>Unboxed types and primitive operations:</Term>
+ <listitem>
+ <para>You can get right down to the raw machine types and
+ operations; included in this are “primitive
+ arrays” (direct access to Big Wads of Bytes). Please
+ see <XRef LinkEnd="glasgow-unboxed"> and following.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Type system extensions:</term>
+ <listitem>
+ <Para> GHC supports a large number of extensions to Haskell's
+ type system. Specifically:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>Multi-parameter type classes:</term>
+ <listitem>
+ <para><XRef LinkEnd="multi-param-type-classes"></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Functional dependencies:</term>
+ <listitem>
+ <para><XRef LinkEnd="functional-dependencies"></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Implicit parameters:</term>
+ <listitem>
+ <para><XRef LinkEnd="implicit-parameters"></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Local universal quantification:</term>
+ <listitem>
+ <para><XRef LinkEnd="universal-quantification"></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Extistentially quantification in data types:</term>
+ <listitem>
+ <para><XRef LinkEnd="existential-quantification"></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Scoped type variables:</term>
+ <listitem>
+ <para>Scoped type variables enable the programmer to
+ supply type signatures for some nested declarations,
+ where this would not be legal in Haskell 98. Details in
+ <XRef LinkEnd="scoped-type-variables">.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </listitem>
+ </varlistentry>
-<VarListEntry>
-<Term>Pattern guards</Term>
-<ListItem>
-<Para>
-Instead of being a boolean expression, a guard is a list of qualifiers, exactly as in a list comprehension. See <XRef LinkEnd="pattern-guards">.
-</Para>
-</ListItem>
-</VarListEntry>
+ <varlistentry>
+ <term>Pattern guards</term>
+ <listitem>
+ <para>Instead of being a boolean expression, a guard is a list
+ of qualifiers, exactly as in a list comprehension. See <XRef
+ LinkEnd="pattern-guards">.</para>
+ </listitem>
+ </varlistentry>
-<VarListEntry>
-<Term>Foreign calling:</Term>
-<ListItem>
-<Para>
-Just what it sounds like. We provide <Emphasis>lots</Emphasis> of rope that you
-can dangle around your neck. Please see <XRef LinkEnd="ffi">.
-</Para>
-</ListItem>
-</VarListEntry>
+ <varlistentry>
+ <term>Foreign calling:</term>
+ <listitem>
+ <para>Just what it sounds like. We provide
+ <Emphasis>lots</Emphasis> of rope that you can dangle around
+ your neck. Please see <XRef LinkEnd="ffi">.</para>
+ </listitem>
+ </varlistentry>
-<VarListEntry>
-<Term>Pragmas</Term>
-<ListItem>
-<Para>
-Pragmas are special instructions to the compiler placed in the source
-file. The pragmas GHC supports are described in <XRef LinkEnd="pragmas">.
-</Para>
-</ListItem>
-</VarListEntry>
+ <varlistentry>
+ <term>Pragmas</term>
+ <listitem>
+ <para>Pragmas are special instructions to the compiler placed
+ in the source file. The pragmas GHC supports are described in
+ <XRef LinkEnd="pragmas">.</para>
+ </listitem>
+ </varlistentry>
-<VarListEntry>
-<Term>Rewrite rules:</Term>
-<ListItem>
-<Para>
-The programmer can specify rewrite rules as part of the source program
-(in a pragma). GHC applies these rewrite rules wherever it can.
-Details in <XRef LinkEnd="rewrite-rules">.
-</Para>
-</ListItem>
-</VarListEntry>
+ <varlistentry>
+ <term>Rewrite rules:</term>
+ <listitem>
+ <para>The programmer can specify rewrite rules as part of the
+ source program (in a pragma). GHC applies these rewrite rules
+ wherever it can. Details in <XRef
+ LinkEnd="rewrite-rules">.</para>
+ </listitem>
+ </varlistentry>
-<VarListEntry>
-<Term>Generic classes:</Term>
-<ListItem>
-<Para>
-Generic class declarations allow you to define a class
-whose methods say how to work over an arbitrary data type.
-Then it's really easy to make any new type into an instance of
-the class. This generalises the rather ad-hoc "deriving" feature
-of Haskell 98.
-Details in <XRef LinkEnd="generic-classes">.
-</Para>
-</ListItem>
-</VarListEntry>
-</VariableList>
-</Para>
+ <varlistentry>
+ <term>Generic classes:</term>
+ <listitem>
+ <para>Generic class declarations allow you to define a class
+ whose methods say how to work over an arbitrary data type.
+ Then it's really easy to make any new type into an instance of
+ the class. This generalises the rather ad-hoc "deriving"
+ feature of Haskell 98. Details in <XRef
+ LinkEnd="generic-classes">.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
<Para>
Before you get too carried away working at the lowest level (e.g.,
</varlistentry>
<varlistentry>
- <term><option>-fignore-asserts</option>:</term>
- <indexterm><primary><option>-fignore-asserts</option></primary></indexterm>
- <listitem>
- <para>See <XRef LinkEnd="sec-assertions">. Only relevant if
- you also use <option>-fglasgow-exts</option>.</Para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
<term><option>-finline-phase</option></term>
<indexterm><primary><option>-finline-phase</option></primary></indexterm>
<listitem>
Reason: exactly which implicit parameter you pick up depends on exactly where
you invoke a function. But the ``invocation'' of instance declarations is done
behind the scenes by the compiler, so it's hard to figure out exactly where it is done.
-Easiest thing is to outlaw the offending types.
+Easiest thing is to outlaw the offending types.</para>
</ListItem>
</ItemizedList>