<itemizedlist>
<listitem>
- <para>The Haskell report specifies that programs may be
- written using Unicode. GHC only accepts the ISO-8859-1
- character set at the moment.</para>
- </listitem>
-
- <listitem>
<para>Certain lexical rules regarding qualified identifiers
are slightly different in GHC compared to the Haskell
report. When you have
<para>GHC's typechecker makes all pattern bindings monomorphic
by default; this behaviour can be disabled with
- <option>-fno-mono-pat-binds</option>. See <xref
+ <option>-XNoMonoPatBinds</option>. See <xref
linkend="options-language" />.</para>
</sect3>
<sect3 id="infelicities-Modules">
<title>Module system and interface files</title>
- <para>None known.</para>
+ <para>GHC requires the use of <literal>hs-boot</literal>
+ files to cut the recursive loops among mutually recursive modules
+ as described in <xref linkend="mutual-recursion"/>. This more of an infelicity
+ than a bug: the Haskell Report says
+ (<ulink url="http://haskell.org/onlinereport/modules.html#sect5.7">Section 5.7</ulink>) "Depending on the Haskell
+ implementation used, separate compilation of mutually
+ recursive modules may require that imported modules contain
+ additional information so that they may be referenced before
+ they are compiled. Explicit type signatures for all exported
+ values may be necessary to deal with mutual recursion. The
+ precise details of separate compilation are not defined by
+ this Report."
+
+ </para>
+
</sect3>
<sect3 id="infelicities-numbers">
alphabetic by <literal>isAlpha</literal>.</para>
</listitem>
</varlistentry>
+
+ <varlistentry>
+ <term><literal>hGetContents</literal></term>
+ <listitem>
+ <para>
+ Lazy I/O throws an exception if an error is
+ encountered, in contrast to the Haskell 98 spec which
+ requires that errors are discarded (see Section 21.2.2
+ of the Haskell 98 report). The exception thrown is
+ the usual IO exception that would be thrown if the
+ failing IO operation was performed in the IO monad, and can
+ be caught by <literal>System.IO.Error.catch</literal>
+ or <literal>Control.Exception.catch</literal>.
+ </para>
+ </listitem>
+ </varlistentry>
</variablelist>
</sect3>
</sect2>
</variablelist>
</sect2>
+
+ <sect2 id="ffi-divergence">
+ <title>Divergence from the FFI specification</title>
+
+ <variablelist>
+ <varlistentry>
+ <term><literal>hs_init()</literal> not allowed
+ after <literal>hs_exit()</literal></term>
+ <listitem>
+ <para>The FFI spec requires the implementation to support
+ re-initialising itself after being shut down
+ with <literal>hs_exit()</literal>, but GHC does not
+ currently support that.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect2>
+
</sect1>
the problem would impose an extra overhead on every
compilation. So the bug remains un-fixed. There is more
background in <ulink
- url="http://research.microsoft.com/~simonpj/Papers/inlining">
+ url="http://research.microsoft.com/~simonpj/Papers/inlining/">
Secrets of the GHC inliner</ulink>.</para>
</listitem>
<!-- Emacs stuff:
;;; Local Variables: ***
- ;;; mode: xml ***
;;; sgml-parent-document: ("users_guide.xml" "book" "chapter") ***
;;; End: ***
-->