</term>
<listitem>
<para>This option enables the language extension defined in the
- Haskell 98 Foreign Function Interface Addendum plus deprecated
- syntax of previous versions of the FFI for backwards
- compatibility.</para>
+ Haskell 98 Foreign Function Interface Addendum.</para>
<para>New reserved words: <literal>foreign</literal>.</para>
</listitem>
<varlistentry>
<term>
- <option>-fno-monomorphism-restriction</option>,<option>-fno-monomorphism-restriction</option>:
+ <option>-fno-monomorphism-restriction</option>,<option>-fno-mono-pat-binds</option>:
</term>
<listitem>
<para> These two flags control how generalisation is done.
described in this section. All are exported by
<literal>GHC.Exts</literal>.</para>
+<sect2> <title>The <literal>seq</literal> function </title>
+<para>
+The function <literal>seq</literal> is as described in the Haskell98 Report.
+<programlisting>
+ seq :: a -> b -> b
+</programlisting>
+It evaluates its first argument to head normal form, and then returns its
+second argument as the result. The reason that it is documented here is
+that, despite <literal>seq</literal>'s polymorphism, its
+second argument can have an unboxed type, or
+can be an unboxed tuple; for example <literal>(seq x 4#)</literal>
+or <literal>(seq x (# p,q #))</literal>. This requires <literal>b</literal>
+to be instantiated to an unboxed type, which is not usually allowed.
+</para>
+</sect2>
+
<sect2> <title>The <literal>inline</literal> function </title>
<para>
The <literal>inline</literal> function is somewhat experimental.
look strict in <literal>y</literal> which would defeat the whole
purpose of <literal>par</literal>.
</para>
+<para>
+Like <literal>seq</literal>, the argument of <literal>lazy</literal> can have
+an unboxed type.
+</para>
+
</sect2>
<sect2> <title>The <literal>unsafeCoerce#</literal> function </title>
well-typed, but where Haskell's type system is not expressive enough to prove
that it is well typed.
</para>
+<para>
+The argument to <literal>unsafeCoerce#</literal> can have unboxed types,
+although extremely bad things will happen if you coerce a boxed type
+to an unboxed type.
+</para>
+
</sect2>
+
</sect1>