Add note about Template Haskell and mutual recursion
authorsimonpj@microsoft.com <unknown>
Wed, 31 Jan 2007 09:14:51 +0000 (09:14 +0000)
committersimonpj@microsoft.com <unknown>
Wed, 31 Jan 2007 09:14:51 +0000 (09:14 +0000)
docs/users_guide/glasgow_exts.xml

index 0c3b07c..fb2124e 100644 (file)
@@ -4226,6 +4226,14 @@ Tim Sheard is going to expand it.)
            (It would make sense to do so, but it's hard to implement.)
    </para></listitem>
 
+   <listitem><para>
+   Furthermore, the you can only run a function at compile time if it is imported
+   from another module <emphasis> that is not part of a mutually-recursive group of modules
+   that includes the module currently being compiled</emphasis>.  For example, when compiling module A,
+   you can only run Template Haskell functions imported from B if B does not import A (directly or indirectly).
+   The reason should be clear: to run B we must compile and run A, but we are currently type-checking A.
+   </para></listitem>
+
     <listitem><para>
            The flag <literal>-ddump-splices</literal> shows the expansion of all top-level splices as they happen.
    </para></listitem>