<para>The flag reference tables (<xref
linkend="flag-reference"/>) lists the status of each flag.</para>
+
+ <para>There are a few flags that are static except that they can
+ also be used with GHCi's <literal>:set</literal> command; these
+ are listed as “static/<literal>:set</literal>” in the
+ table.</para>
</sect1>
<sect1 id="file-suffixes">
<para>Dependency-generation mode. In this mode, GHC can be
used to generate dependency information suitable for use in
a <literal>Makefile</literal>. See <xref
- linkend="sec-makefile-dependencies"/>.</para>
+ linkend="makefile-dependencies"/>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<cmdsynopsis>
- <command>ghc --version</command> <command>ghc -V</command>
+ <command>ghc --version</command>
+ <command>ghc -V</command>
+ </cmdsynopsis>
<indexterm><primary><option>-V</option></primary></indexterm>
<indexterm><primary><option>––version</option></primary></indexterm>
- </cmdsynopsis>
</term>
<listitem>
<para>Print a one-line string including GHC's version number.</para>
<varlistentry>
<term>
<cmdsynopsis>
- <command>ghc --numeric-version</command>
+ <command>ghc --numeric-version</command>
+ </cmdsynopsis>
<indexterm><primary><option>––numeric-version</option></primary></indexterm>
- </cmdsynopsis>
</term>
<listitem>
<para>Print GHC's numeric version number only.</para>
<varlistentry>
<term>
<cmdsynopsis>
- <command>ghc --print-libdir</command>
+ <command>ghc --print-libdir</command>
+ </cmdsynopsis>
<indexterm><primary><option>––print-libdir</option></primary></indexterm>
- </cmdsynopsis>
</term>
<listitem>
<para>Print the path to GHC's library directory. This is
<indexterm><primary>help options</primary></indexterm>
<indexterm><primary>verbosity options</primary></indexterm>
- See also the <option>--help</option>, <option>--version</option>, <option>--numeric-version</option>,
- and <option>--print-libdir</option> modes in <xref linkend="modes"/>.
+ <para>See also the <option>--help</option>, <option>--version</option>, <option>--numeric-version</option>,
+ and <option>--print-libdir</option> modes in <xref linkend="modes"/>.</para>
<variablelist>
<varlistentry>
<term>
<term><option>-Wall</option>:</term>
<listitem>
<indexterm><primary><option>-Wall</option></primary></indexterm>
- <para>Turns on all warning options.</para>
+ <para>Turns on all warning options that indicate potentially
+ suspicious code. The warnings that are
+ <emphasis>not</emphasis> enabled by <option>-Wall</option>
+ are:</para>
+ <itemizedlist>
+ <listitem><option>-fwarn-simple-patterns</option></listitem>
+ <listitem><option>-fwarn-tabs</option></listitem>
+ <listitem><option>-fwarn-incomplete-record-updates</option></listitem>
+ <listitem><option>-fwarn-monomorphism-restriction</option></listitem>
+ </itemizedlist>
</listitem>
</varlistentry>
<para>If you would like GHC to check that every top-level
function/value has a type signature, use the
- <option>-fwarn-missing-signatures</option> option. This
+ <option>-fwarn-missing-signatures</option> option. As part of
+ the warning GHC also reports the inferred type. The
option is off by default.</para>
</listitem>
</varlistentry>
in the inadvertent cyclic definition <literal>let x = ... x
... in</literal>.</para>
- <para>Consequently, this option does
+ <para>Consequently, this option
<emphasis>will</emphasis> complain about cyclic recursive
definitions.</para>
</listitem>
</varlistentry>
<varlistentry>
+ <term><option>-fwarn-monomorphism-restriction</option>:</term>
+ <listitem>
+ <indexterm><primary><option>-fwarn-monomorphism-restriction</option></primary></indexterm>
+ <indexterm><primary>monomorphism restriction, warning</primary></indexterm>
+ <para>Have the compiler warn/inform you where in your source
+ the Haskell Monomorphism Restriction is applied. If applied silently
+ the MR can give rise to unexpected behaviour, so it can be helpful
+ to have an explicit warning that it is being applied.</para>
+
+ <para>This warning is off by default.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
<term><option>-fwarn-unused-binds</option>:</term>
<listitem>
<indexterm><primary><option>-fwarn-unused-binds</option></primary></indexterm>
<literal>Exception.assert</literal> in source code (in
other words, rewriting <literal>Exception.assert p
e</literal> to <literal>e</literal> (see <xref
- linkend="sec-assertions"/>). This flag is turned on by
+ linkend="assertions"/>). This flag is turned on by
<option>-O</option>.
</para>
</listitem>
&phases;
- <sect1 id="sec-using-concurrent">
+ <sect1 id="using-concurrent">
<title>Using Concurrent Haskell</title>
<indexterm><primary>Concurrent Haskell</primary><secondary>using</secondary></indexterm>
</variablelist>
</sect1>
- <sect1 id="sec-using-smp">
+ <sect1 id="using-smp">
<title>Using SMP parallelism</title>
<indexterm><primary>parallelism</primary>
</indexterm>