[project @ 1998-08-15 18:02:17 by sof]
[ghc-hetmet.git] / ghc / docs / users_guide / debugging.vsgml
index 8931dd6..23cd5ca 100644 (file)
@@ -84,9 +84,24 @@ example: @ghc -noC -ddump-simpl Foo.hs@
 
 <tag>@-hi@:</tag>
 <nidx>-hi option</nidx>
-<em>Do</em> generate an interface file.  This would normally be used in
-conjunction with @-noC@, which turns off interface generation;
-thus: @-noC -hi@.
+<em>Do</em> generate an interface file (on @stdout@.) This would
+normally be used in conjunction with @-noC@, which turns off interface
+generation; thus: @-noC -hi@.
+
+<tag>@-hi-with-&lt;section&gt;@:</tag>
+<nidx>-hi-with option</nidx>
+Generate just the specified section of an interface file. In case you're
+only interested in a subset of what @-hi@ outputs, @-hi-with-&lt;section&gt;@
+is just the ticket. For instance 
+
+<tscreen> <verb>
+-noC -hi-with-declarations -hi-with-exports
+</verb> </tscreen>
+
+will output the sections containing the exports and the
+declarations. Legal sections are: @declarations@, @exports@,
+@instances@, @instance_modules@, @usages@, @fixities@, and
+@interface@.
 
 <tag>@-dshow-passes@:</tag>
 <nidx>-dshow-passes option</nidx>
@@ -322,51 +337,3 @@ flags in your module, the OPTIONS will get put into the generated .hc
 file).
 
 %----------------------------------------------------------------------
-<sect2>How to compile mutually recursive modules
-<p>
-<nidx>module system, recursion</nidx>
-
-Currently, the compiler does not have proper support for dealing with
-mutually recursive modules:
-
-<tscreen><verb>
-module A where
-
-import B
-
-newtype A = A Int
-
-f :: B -> A
-f (B x) = A x
---------
-module B where
-
-import A
-
-data B = B !Int
-
-g :: A -> B
-g (A x) = B x
-</verb></tscreen>
-
-When compiling either module A and B, the compiler will try (in vain)
-to look for the interface file of the other. So, to get mutually
-recursive modules off the ground, you need to hand write an interface
-file for A or B, so as to break the loop. For the example at hand, the
-boot interface file for A would like the following:
-
-<tscreen><verb>
-_interface_ A 1
-_exports_
-A A(A) f;
-_declarations_
-1 newtype A = A PrelBase.Int ;
-1 f _:_ B.B -> A.A ;;
-</verb></tscreen>
-
-To make sure you get the syntax right, tailoring an existing interface
-file is a Good Idea.
-
-<bf>Note:</bf> This is all a temporary solution, a version of the
-compiler that handles mutually recursive properly without the manual
-construction of interface file, is in the works.