projects
/
ghc-hetmet.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
a0dc836
)
Improve docs for orphan decls (thanks Yitzchak Gale)
author
simonpj@microsoft.com
<unknown>
Wed, 13 Aug 2008 08:28:28 +0000
(08:28 +0000)
committer
simonpj@microsoft.com
<unknown>
Wed, 13 Aug 2008 08:28:28 +0000
(08:28 +0000)
docs/users_guide/separate_compilation.xml
patch
|
blob
|
history
diff --git
a/docs/users_guide/separate_compilation.xml
b/docs/users_guide/separate_compilation.xml
index
1bdb0c5
..
bc3afca
100644
(file)
--- a/
docs/users_guide/separate_compilation.xml
+++ b/
docs/users_guide/separate_compilation.xml
@@
-1169,7
+1169,8
@@
just in case they contain an instance declaration that matters to M. This would
be a disaster in practice, so GHC tries to be clever. </para>
<para>In particular, if an instance declaration is in the same module as the definition
be a disaster in practice, so GHC tries to be clever. </para>
<para>In particular, if an instance declaration is in the same module as the definition
-of any type or class mentioned in the head of the instance declaration, then
+of any type or class mentioned in the <emphasis>head</emphasis> of the instance declaration
+(the part after the “<literal>=></literal>”; see <xref linkend="instance-rules"/>), then
GHC has to visit that interface file anyway. Example:</para>
<programlisting>
module A where
GHC has to visit that interface file anyway. Example:</para>
<programlisting>
module A where
@@
-1208,7
+1209,7
@@
functional dependency:
class E x y | y -> x where ...
</programlisting>
Then in some importing module M, the constraint <literal>(E a Int)</literal> should be "improved" by setting
class E x y | y -> x where ...
</programlisting>
Then in some importing module M, the constraint <literal>(E a Int)</literal> should be "improved" by setting
-<literal>a = Int</literal>, <emphasis>even though there is no explicit mention
+<literal>a = T</literal>, <emphasis>even though there is no explicit mention
of <literal>T</literal> in M</emphasis>.</para>
These considerations lead to the following definition of an orphan module:
of <literal>T</literal> in M</emphasis>.</para>
These considerations lead to the following definition of an orphan module:
@@
-1232,7
+1233,7
@@
These considerations lead to the following definition of an orphan module:
</para></listitem>
</itemizedlist>
</para>
</para></listitem>
</itemizedlist>
</para>
- <para> Only the instance head (the part after the “<literal>=></literal>”)
+ <para> Only the instance head
counts. In the example above, it is not good enough for C's declaration
to be in module A; it must be the declaration of D or T.</para>
</listitem>
counts. In the example above, it is not good enough for C's declaration
to be in module A; it must be the declaration of D or T.</para>
</listitem>