<para>GHC has the following known bugs or infelicities:
<itemizedlist>
+<listitem><para>
+GHC only provides tuples up to size 62, and derived tuple instances (for
+Eq, Ord, etc) up to size 15.
+</para></listitem>
+
+<listitem><para>
+GHC can warn about non-exhaustive or overlapping patterns, and usually does so correctly.
+But not always. It gets confused by string patterns, and by guards, and can then
+emit bogus warnings. The entire overlap-check code needs an overhaul really.
+</para></listitem>
+
+
+
<listitem><para>Dangers with multiple Main modules.</para>
<para>
<listitem><para>
The flag <literal>-ddump-splices</literal> shows the expansion of all top-level splices as they happen.
</para></listitem>
+ <listitem><para>
+ If you are building GHC from source, you need at least a stage-2 bootstrap compiler to
+ run Template Haskell. A stage-1 compiler will reject the TH constructs. Reason: TH
+ compiles and runs a program, and then looks at the result. So it's important that
+ the program it compiles produces results whose representations are identical to
+ those of the compiler itself.
+ </para></listitem>
</itemizedlist>
</para>
<para> Template Haskell works in any mode (<literal>--make</literal>, <literal>--interactive</literal>,
<para>Now run the compiler (here we are using a "stage three" build of GHC, at a Cygwin prompt on Windows):
</para>
<programlisting>
-stage3/ghc/compiler/ghc-inplace --make -fglasgow-exts -package haskell-src main.hs -o main.exe
+ghc/compiler/stage3/ghc-inplace --make -fglasgow-exts -package haskell-src main.hs -o main.exe
</programlisting>
<para>Run "main.exe" and here is your output: