[project @ 2000-01-24 16:47:24 by rrt]
authorrrt <unknown>
Mon, 24 Jan 2000 16:47:26 +0000 (16:47 +0000)
committerrrt <unknown>
Mon, 24 Jan 2000 16:47:26 +0000 (16:47 +0000)
Changed double quotes to &ldquo; and &rdquo;. Improvements to Windows
installation instructions.

14 files changed:
ghc/docs/users_guide/4-04-notes.sgml
ghc/docs/users_guide/debugging.sgml
ghc/docs/users_guide/glasgow_exts.sgml
ghc/docs/users_guide/gone_wrong.sgml
ghc/docs/users_guide/installing.sgml
ghc/docs/users_guide/intro.sgml
ghc/docs/users_guide/libraries.sgml
ghc/docs/users_guide/parallel.sgml
ghc/docs/users_guide/profiling.sgml
ghc/docs/users_guide/runtime_control.sgml
ghc/docs/users_guide/sooner.sgml
ghc/docs/users_guide/using.sgml
ghc/docs/users_guide/utils.sgml
ghc/docs/users_guide/vs_haskell.sgml

index 69ac428..a17baa1 100644 (file)
@@ -13,7 +13,7 @@
 <ItemizedList>
 <ListItem>
 <Para>
-``Finalise'' is now spelt ``finalize'' in all function names.
+&ldquo;Finalise&rdquo; is now spelt &ldquo;finalize&rdquo; in all function names.
 </Para>
 </ListItem>
 
index 20cf599..e203081 100644 (file)
@@ -390,10 +390,10 @@ when even <Option>-dverbose-simpl</Option> doesn't cut it.
 <Para>
 <IndexTerm><Primary>-dppr-user option</Primary></IndexTerm>
 <IndexTerm><Primary>-dppr-debug option</Primary></IndexTerm>
-Debugging output is in one of several ``styles.''  Take the printing
-of types, for example.  In the ``user'' style, the compiler's internal
+Debugging output is in one of several &ldquo;styles.&rdquo;  Take the printing
+of types, for example.  In the &ldquo;user&rdquo; style, the compiler's internal
 ideas about types are presented in Haskell source-level syntax,
-insofar as possible.  In the ``debug'' style (which is the default for
+insofar as possible.  In the &ldquo;debug&rdquo; style (which is the default for
 debugging output), the types are printed in with
 explicit foralls, and variables have their unique-id attached (so you
 can check for things that look the same but aren't).
@@ -415,7 +415,7 @@ of transformation too place.  If you add <Option>-dppr-debug</Option> you get mo
 <ListItem>
 <Para>
 <IndexTerm><Primary>-ddump-raw-asm option</Primary></IndexTerm>
-Dump out the assembly-language stuff, before the ``mangler'' gets it.
+Dump out the assembly-language stuff, before the &ldquo;mangler&rdquo; gets it.
 </Para>
 </ListItem>
 </VarListEntry>
@@ -522,16 +522,16 @@ skip2 m = m : skip2 (m+2)
 <Para>
 Before we jump in, a word about names of things.  Within GHC,
 variables, type constructors, etc., are identified by their
-``Uniques.''  These are of the form `letter' plus `number' (both
+&ldquo;Uniques.&rdquo;  These are of the form `letter' plus `number' (both
 loosely interpreted).  The `letter' gives some idea of where the
-Unique came from; e.g., <Literal>&lowbar;</Literal> means ``built-in type variable'';
-<Literal>t</Literal> means ``from the typechecker''; <Literal>s</Literal> means ``from the
-simplifier''; and so on.  The `number' is printed fairly compactly in
+Unique came from; e.g., <Literal>&lowbar;</Literal> means &ldquo;built-in type variable&rdquo;;
+<Literal>t</Literal> means &ldquo;from the typechecker&rdquo;; <Literal>s</Literal> means &ldquo;from the
+simplifier&rdquo;; and so on.  The `number' is printed fairly compactly in
 a `base-62' format, which everyone hates except me (WDP).
 </Para>
 
 <Para>
-Remember, everything has a ``Unique'' and it is usually printed out
+Remember, everything has a &ldquo;Unique&rdquo; and it is usually printed out
 when debugging, in some form or another.  So here we go&hellip;
 </Para>
 
@@ -610,7 +610,7 @@ Main.skip2{-r1L6-} =
 </Para>
 
 <Para>
-(``It's just a simple functional language'' is an unregisterised
+(&ldquo;It's just a simple functional language&rdquo; is an unregisterised
 trademark of Peyton Jones Enterprises, plc.)
 </Para>
 
index 6f2737e..f14d9f2 100644 (file)
@@ -10,9 +10,9 @@ the language.  To use them, you'll need to give a <Option>-fglasgow-exts</Option
 Virtually all of the Glasgow extensions serve to give you access to
 the underlying facilities with which we implement Haskell.  Thus, you
 can get at the Raw Iron, if you are willing to write some non-standard
-code at a more primitive level.  You need not be ``stuck'' on
+code at a more primitive level.  You need not be &ldquo;stuck&rdquo; on
 performance because of the implementation costs of Haskell's
-``high-level'' features&mdash;you can always code ``under'' them.  In an
+&ldquo;high-level&rdquo; features&mdash;you can always code &ldquo;under&rdquo; them.  In an
 extreme case, you can write all your time-critical code in C, and then
 just glue it together with Haskell!
 </Para>
@@ -29,7 +29,7 @@ Executive summary of our extensions:
 <ListItem>
 <Para>
 You can get right down to the raw machine types and operations;
-included in this are ``primitive arrays'' (direct access to Big Wads
+included in this are &ldquo;primitive arrays&rdquo; (direct access to Big Wads
 of Bytes).  Please see <XRef LinkEnd="glasgow-unboxed"> and following.
 </Para>
 </ListItem>
@@ -113,8 +113,8 @@ Details in <XRef LinkEnd="rewrite-rules">.
 <Para>
 Before you get too carried away working at the lowest level (e.g.,
 sloshing <Literal>MutableByteArray&num;</Literal>s around your program), you may wish to
-check if there are system libraries that provide a ``Haskellised
-veneer'' over the features you want.  See <XRef LinkEnd="ghc-prelude">.
+check if there are system libraries that provide a &ldquo;Haskellised
+veneer&rdquo; over the features you want.  See <XRef LinkEnd="ghc-prelude">.
 </Para>
 
 <Sect1 id="glasgow-unboxed">
@@ -126,7 +126,7 @@ veneer'' over the features you want.  See <XRef LinkEnd="ghc-prelude">.
 </Para>
 
 <Para>
-These types correspond to the ``raw machine'' types you would use in
+These types correspond to the &ldquo;raw machine&rdquo; types you would use in
 C: <Literal>Int&num;</Literal> (long int), <Literal>Double&num;</Literal> (double), <Literal>Addr&num;</Literal> (void *), etc.  The
 <Emphasis>primitive operations</Emphasis> (PrimOps) on these types are what you
 might expect; e.g., <Literal>(+&num;)</Literal> is addition on <Literal>Int&num;</Literal>s, and is the
@@ -149,7 +149,7 @@ results.  Even worse, the unboxed value might be larger than a pointer
 
 <Para>
 Nevertheless, A numerically-intensive program using unboxed types can
-go a <Emphasis>lot</Emphasis> faster than its ``standard'' counterpart&mdash;we saw a
+go a <Emphasis>lot</Emphasis> faster than its &ldquo;standard&rdquo; counterpart&mdash;we saw a
 threefold speedup on one example.
 </Para>
 
@@ -171,7 +171,7 @@ operations on them.
 
 <Para>
 This monad underlies our implementation of arrays, mutable and
-immutable, and our implementation of I/O, including ``C calls''.
+immutable, and our implementation of I/O, including &ldquo;C calls&rdquo;.
 </Para>
 
 <Para>
@@ -211,7 +211,7 @@ Second, it distinguishes between&hellip;
 <Term>Immutable:</Term>
 <ListItem>
 <Para>
-Arrays that do not change (as with ``standard'' Haskell arrays); you
+Arrays that do not change (as with &ldquo;standard&rdquo; Haskell arrays); you
 can only read from them.  Obviously, they do not need the care and
 attention of the state-transformer monad.
 </Para>
@@ -221,29 +221,29 @@ attention of the state-transformer monad.
 <Term>Mutable:</Term>
 <ListItem>
 <Para>
-Arrays that may be changed or ``mutated.''  All the operations on them
+Arrays that may be changed or &ldquo;mutated.&rdquo;  All the operations on them
 live within the state-transformer monad and the updates happen
 <Emphasis>in-place</Emphasis>.
 </Para>
 </ListItem>
 </VarListEntry>
 <VarListEntry>
-<Term>``Static'' (in C land):</Term>
+<Term>&ldquo;Static&rdquo; (in C land):</Term>
 <ListItem>
 <Para>
 A C routine may pass an <Literal>Addr&num;</Literal> pointer back into Haskell land.  There
 are then primitive operations with which you may merrily grab values
-over in C land, by indexing off the ``static'' pointer.
+over in C land, by indexing off the &ldquo;static&rdquo; pointer.
 </Para>
 </ListItem>
 </VarListEntry>
 <VarListEntry>
-<Term>``Stable'' pointers:</Term>
+<Term>&ldquo;Stable&rdquo; pointers:</Term>
 <ListItem>
 <Para>
 If, for some reason, you wish to hand a Haskell pointer (i.e.,
 <Emphasis>not</Emphasis> an unboxed value) to a C routine, you first make the
-pointer ``stable,'' so that the garbage collector won't forget that it
+pointer &ldquo;stable,&rdquo; so that the garbage collector won't forget that it
 exists.  That is, GHC provides a safe way to pass Haskell pointers to
 C.
 </Para>
@@ -254,14 +254,14 @@ Please see <XRef LinkEnd="glasgow-stablePtrs"> for more details.
 </ListItem>
 </VarListEntry>
 <VarListEntry>
-<Term>``Foreign objects'':</Term>
+<Term>&ldquo;Foreign objects&rdquo;:</Term>
 <ListItem>
 <Para>
-A ``foreign object'' is a safe way to pass an external object (a
+A &ldquo;foreign object&rdquo; is a safe way to pass an external object (a
 C-allocated pointer, say) to Haskell and have Haskell do the Right
 Thing when it no longer references the object.  So, for example, C
-could pass a large bitmap over to Haskell and say ``please free this
-memory when you're done with it.''
+could pass a large bitmap over to Haskell and say &ldquo;please free this
+memory when you're done with it.&rdquo;
 </Para>
 
 <Para>
@@ -273,8 +273,8 @@ Please see <XRef LinkEnd="glasgow-foreignObjs"> for more details.
 </Para>
 
 <Para>
-The libraries section gives more details on all these ``primitive
-array'' types and the operations on them, <XRef LinkEnd="ghc-prelude">.  Some of these extensions
+The libraries section gives more details on all these &ldquo;primitive
+array&rdquo; types and the operations on them, <XRef LinkEnd="ghc-prelude">.  Some of these extensions
 are also supported by Hugs, and the supporting libraries are described
 in the <ULink
 URL="libs.html"
@@ -326,7 +326,7 @@ is to provide a Haskell wrapper:
 
 <ProgramListing>
 fooH :: Char -&#62; Int -&#62; Double -&#62; Word -&#62; IO Double
-fooH c i d w = _ccall_ fooC (``stdin''::Addr) c i d w
+fooH c i d w = _ccall_ fooC (&ldquo;stdin&rdquo;::Addr) c i d w
 </ProgramListing>
 
 </Para>
@@ -350,7 +350,7 @@ import Addr
 import CString
 
 oldGetEnv name
-  = _casm_ ``%r = getenv((char *) %0);'' name &#62;&#62;= \ litstring -&#62;
+  = _casm_ &ldquo;%r = getenv((char *) %0);&rdquo; name &#62;&#62;= \ litstring -&#62;
     return (
         if (litstring == nullAddr) then
             Left ("Fail:oldGetEnv:"++name)
@@ -363,7 +363,7 @@ oldGetEnv name
 
 <Para>
 The first literal-literal argument to a <Function>&lowbar;casm&lowbar;</Function> is like a <Function>printf</Function>
-format: <Literal>&percnt;r</Literal> is replaced with the ``result,'' <Literal>&percnt;0</Literal>&ndash;<Literal>&percnt;n-1</Literal> are
+format: <Literal>&percnt;r</Literal> is replaced with the &ldquo;result,&rdquo; <Literal>&percnt;0</Literal>&ndash;<Literal>&percnt;n-1</Literal> are
 replaced with the 1st&ndash;nth arguments.  As you can see above, it is an
 easy way to do simple C&nbsp;casting.  Everything said about <Function>&lowbar;ccall&lowbar;</Function> goes
 for <Function>&lowbar;casm&lowbar;</Function> as well.
@@ -409,7 +409,7 @@ from the <Function>&lowbar;casm&lowbar;</Function> construct itself. Indeed, we'
 
 <ProgramListing>
 fooH :: Char -&#62; Int -&#62; Double -&#62; Word -&#62; IO Double
-fooH c i d w = _ccall_ fooC (``stdin''::Addr) c i d w
+fooH c i d w = _ccall_ fooC (&ldquo;stdin&rdquo;::Addr) c i d w
 </ProgramListing>
 
 </Para>
@@ -562,7 +562,7 @@ solid code.  You're crazy not to do it.
 </Sect2>
 
 <Sect2 id="glasgow-stablePtrs">
-<Title>Subverting automatic unboxing with ``stable pointers''
+<Title>Subverting automatic unboxing with &ldquo;stable pointers&rdquo;
 </Title>
 
 <Para>
@@ -601,8 +601,8 @@ to boxed objects are not <Emphasis>stable</Emphasis>.
 </Para>
 
 <Para>
-It is possible to subvert the unboxing process by creating a ``stable
-pointer'' to a value and passing the stable pointer instead.  For
+It is possible to subvert the unboxing process by creating a &ldquo;stable
+pointer&rdquo; to a value and passing the stable pointer instead.  For
 example, to pass/return an integer lazily to C functions <Function>storeC</Function> and
 <Function>fetchC</Function> might write:
 </Para>
@@ -769,7 +769,7 @@ atan2d y x = unsafePerformIO (_ccall_ atan2d y x)
 sincosd :: Double -&#62; (Double, Double)
 sincosd x = unsafePerformIO $ do
         da &#60;- newDoubleArray (0, 1)
-        _casm_ ``sincosd( %0, &amp;((double *)%1[0]), &amp;((double *)%1[1]) );'' x da
+        _casm_ &ldquo;sincosd( %0, &amp;((double *)%1[0]), &amp;((double *)%1[1]) );&rdquo; x da
         s &#60;- readDoubleArray da 0
         c &#60;- readDoubleArray da 1
         return (s, c)
@@ -825,7 +825,7 @@ trace string expr
         ((_ccall_ PostTraceHook sTDERR{-msg-}):: IO ()) &#62;&#62;
         return expr )
   where
-    sTDERR = (``stderr'' :: Addr)
+    sTDERR = (&ldquo;stderr&rdquo; :: Addr)
 </ProgramListing>
 
 
@@ -841,7 +841,7 @@ useful in debugging code.)
 </Sect2>
 
 <Sect2 id="ccall-gotchas">
-<Title>C-calling ``gotchas'' checklist
+<Title>C-calling &ldquo;gotchas&rdquo; checklist
 </Title>
 
 <Para>
@@ -2851,7 +2851,7 @@ also OK to say:
 <ListItem>
 
 <Para>
-To avoid ambiguity, the type after the ``<Literal>::</Literal>'' in a result
+To avoid ambiguity, the type after the &ldquo;<Literal>::</Literal>&rdquo; in a result
 pattern signature on a lambda or <Literal>case</Literal> must be atomic (i.e. a single
 token or a parenthesised type of some sort).  To see why,
 consider how one would parse this:
@@ -2972,8 +2972,8 @@ but they might affect the efficiency of the generated code.
 <IndexTerm><Primary>pragma, INLINE</Primary></IndexTerm></Title>
 
 <Para>
-GHC (with <Option>-O</Option>, as always) tries to inline (or ``unfold'')
-functions/values that are ``small enough,'' thus avoiding the call
+GHC (with <Option>-O</Option>, as always) tries to inline (or &ldquo;unfold&rdquo;)
+functions/values that are &ldquo;small enough,&rdquo; thus avoiding the call
 overhead and possibly exposing other more-wonderful optimisations.
 </Para>
 
@@ -2983,7 +2983,7 @@ interface files.
 </Para>
 
 <Para>
-Normally, if GHC decides a function is ``too expensive'' to inline, it
+Normally, if GHC decides a function is &ldquo;too expensive&rdquo; to inline, it
 will not do so, nor will it export that unfolding for other modules to
 use.
 </Para>
@@ -3006,7 +3006,7 @@ to stick the code through HBC&mdash;it doesn't like <Literal>INLINE</Literal> pr
 
 <Para>
 The major effect of an <Literal>INLINE</Literal> pragma is to declare a function's
-``cost'' to be very low.  The normal unfolding machinery will then be
+&ldquo;cost&rdquo; to be very low.  The normal unfolding machinery will then be
 very keen to inline it.
 </Para>
 
@@ -3719,7 +3719,7 @@ If you add <Option>-dppr-debug</Option> you get a more detailed listing.
 </ProgramListing>
 
 Notice the <Literal>INLINE</Literal>!  That prevents <Literal>(:)</Literal> from being inlined when compiling
-<Literal>PrelBase</Literal>, so that an importing module will ``see'' the <Literal>(:)</Literal>, and can
+<Literal>PrelBase</Literal>, so that an importing module will &ldquo;see&rdquo; the <Literal>(:)</Literal>, and can
 match it on the LHS of a rule.  <Literal>INLINE</Literal> prevents any inlining happening
 in the RHS of the <Literal>INLINE</Literal> thing.  I regret the delicacy of this.
 
index 094125c..b5910c9 100644 (file)
@@ -20,7 +20,7 @@ be of interest.)
 </Para>
 
 <Sect1 id="wrong-compiler">
-<Title>When the compiler ``does the wrong thing''
+<Title>When the compiler &ldquo;does the wrong thing&rdquo;
 </Title>
 
 <Para>
@@ -32,7 +32,7 @@ be of interest.)
 <VariableList>
 
 <VarListEntry>
-<Term>``Help! The compiler crashed (or `panic'd)!''</Term>
+<Term>&ldquo;Help! The compiler crashed (or `panic'd)!&rdquo;</Term>
 <ListItem>
 <Para>
 These events are <Emphasis>always</Emphasis> bugs in the GHC system&mdash;please report them.
@@ -40,7 +40,7 @@ These events are <Emphasis>always</Emphasis> bugs in the GHC system&mdash;please
 </ListItem>
 </VarListEntry>
 <VarListEntry>
-<Term>``The compiler ran out of heap (or stack) when compiling itself!''</Term>
+<Term>&ldquo;The compiler ran out of heap (or stack) when compiling itself!&rdquo;</Term>
 <ListItem>
 <Para>
 It happens.  We try to supply reasonable <Option>-H&lt;n&gt;</Option> flags for
@@ -61,15 +61,15 @@ heap.
 </ListItem>
 </VarListEntry>
 <VarListEntry>
-<Term>``The compiler died with a pattern-matching error.''</Term>
+<Term>&ldquo;The compiler died with a pattern-matching error.&rdquo;</Term>
 <ListItem>
 <Para>
-This is a bug just as surely as a ``panic.'' Please report it.
+This is a bug just as surely as a &ldquo;panic.&rdquo; Please report it.
 </Para>
 </ListItem>
 </VarListEntry>
 <VarListEntry>
-<Term>``This is a terrible error message.''</Term>
+<Term>&ldquo;This is a terrible error message.&rdquo;</Term>
 <ListItem>
 <Para>
 If you think that GHC could have produced a better error message,
@@ -78,7 +78,7 @@ please report it as a bug.
 </ListItem>
 </VarListEntry>
 <VarListEntry>
-<Term>``What about these `trace' messages from GHC?''</Term>
+<Term>&ldquo;What about these `trace' messages from GHC?&rdquo;</Term>
 <ListItem>
 <Para>
 Almost surely not a problem.  About some specific cases&hellip;
@@ -96,7 +96,7 @@ turning on the <Option>-fshow-simplifier-progress</Option>
 </Para>
 
 <Para>
-If the simplifier definitely seems to be ``looping,'' please report
+If the simplifier definitely seems to be &ldquo;looping,&rdquo; please report
 it.
 </Para>
 </ListItem>
@@ -106,10 +106,10 @@ it.
 </ListItem>
 </VarListEntry>
 <VarListEntry>
-<Term>``What about this warning from the C compiler?''</Term>
+<Term>&ldquo;What about this warning from the C compiler?&rdquo;</Term>
 <ListItem>
 <Para>
-For example: ``&hellip;warning: `Foo' declared `static' but never defined.''
+For example: &ldquo;&hellip;warning: `Foo' declared `static' but never defined.&rdquo;
 Unsightly, but shouldn't be a problem.
 </Para>
 </ListItem>
@@ -132,11 +132,11 @@ running programs compiled using unstable interfaces.
 </ListItem>
 </VarListEntry>
 <VarListEntry>
-<Term>``I think GHC is producing incorrect code'':</Term>
+<Term>&ldquo;I think GHC is producing incorrect code&rdquo;:</Term>
 <ListItem>
 <Para>
 Unlikely :-) A useful be-more-paranoid option to give to GHC is
-<Option>-dcore-lint</Option><IndexTerm><Primary>-dcore-lint option</Primary></IndexTerm>; this causes a ``lint''
+<Option>-dcore-lint</Option><IndexTerm><Primary>-dcore-lint option</Primary></IndexTerm>; this causes a &ldquo;lint&rdquo;
 pass to check for errors (notably type errors) after each Core-to-Core
 transformation pass.  We run with <Option>-dcore-lint</Option> on all the time; it
 costs about 5&percnt; in compile time.
@@ -144,7 +144,7 @@ costs about 5&percnt; in compile time.
 </ListItem>
 </VarListEntry>
 <VarListEntry>
-<Term>``Why did I get a link error?''</Term>
+<Term>&ldquo;Why did I get a link error?&rdquo;</Term>
 <ListItem>
 <Para>
 If the linker complains about not finding <Literal>&lowbar;&lt;something&gt;&lowbar;fast</Literal>, then
@@ -154,7 +154,7 @@ proper dependency order.
 </ListItem>
 </VarListEntry>
 <VarListEntry>
-<Term>``What's a `consistency error'?''</Term>
+<Term>&ldquo;What's a `consistency error'?&rdquo;</Term>
 <ListItem>
 <Para>
 (These are reported just after linking your program.)
@@ -176,11 +176,11 @@ tags/strings in your object files.  They must all be the same!
 </ListItem>
 </VarListEntry>
 <VarListEntry>
-<Term>``Is this line number right?''</Term>
+<Term>&ldquo;Is this line number right?&rdquo;</Term>
 <ListItem>
 <Para>
 On this score, GHC usually does pretty well, especially
-if you ``allow'' it to be off by one or two.  In the case of an
+if you &ldquo;allow&rdquo; it to be off by one or two.  In the case of an
 instance or class declaration, the line number
 may only point you to the declaration, not to a specific method.
 </Para>
@@ -196,7 +196,7 @@ Please report line-number errors that you find particularly unhelpful.
 </Sect1>
 
 <Sect1 id="wrong-compilee">
-<Title>When your program ``does the wrong thing''
+<Title>When your program &ldquo;does the wrong thing&rdquo;
 </Title>
 
 <Para>
@@ -212,7 +212,7 @@ please see <XRef LinkEnd="sooner-faster-quicker">).
 <VariableList>
 
 <VarListEntry>
-<Term>``Help! My program crashed!''</Term>
+<Term>&ldquo;Help! My program crashed!&rdquo;</Term>
 <ListItem>
 <Para>
 (e.g., a `segmentation fault' or `core dumped')
@@ -231,7 +231,7 @@ case these <Emphasis>must</Emphasis> be correct with respect to the module sourc
 For example, if an interface is lying about the type of an imported
 value then GHC may well generate duff code for the importing module.
 <Emphasis>This applies to pragmas inside interfaces too!</Emphasis>  If the pragma is
-lying (e.g., about the ``arity'' of a value), then duff code may result.
+lying (e.g., about the &ldquo;arity&rdquo; of a value), then duff code may result.
 Furthermore, arities may change even if types do not.
 </Para>
 
@@ -281,7 +281,7 @@ GHC-compiled program, please see <XRef LinkEnd="hard-core-debug">.
 </ListItem>
 </VarListEntry>
 <VarListEntry>
-<Term>``My program entered an `absent' argument.''</Term>
+<Term>&ldquo;My program entered an `absent' argument.&rdquo;</Term>
 <ListItem>
 <Para>
 This is definitely caused by a bug in GHC. Please report it.
@@ -289,7 +289,7 @@ This is definitely caused by a bug in GHC. Please report it.
 </ListItem>
 </VarListEntry>
 <VarListEntry>
-<Term>``What's with this `arithmetic (or `floating') exception' ''?</Term>
+<Term>&ldquo;What's with this `arithmetic (or `floating') exception' &rdquo;?</Term>
 <ListItem>
 <Para>
 <Literal>Int</Literal>, <Literal>Float</Literal>, and <Literal>Double</Literal> arithmetic is <Emphasis>unchecked</Emphasis>.
@@ -322,7 +322,7 @@ not-really-a problem.)
 
 <Para>
 The name of the bug-reporting game is: facts, facts, facts.
-Don't omit them because ``Oh, they won't be interested&hellip;''
+Don't omit them because &ldquo;Oh, they won't be interested&hellip;&rdquo;
 </Para>
 
 <Para>
@@ -348,7 +348,7 @@ version of the operating system are you using? (<Command>uname -a</Command> or <
 
 <Para>
  Run the sequence of compiles/runs that caused the offending
-behaviour, capturing all the input/output in a ``script'' (a UNIX
+behaviour, capturing all the input/output in a &ldquo;script&rdquo; (a UNIX
 command) or in an Emacs shell window.  We'd prefer to see the whole
 thing.
 
index 7a72e78..d668f21 100644 (file)
@@ -6,7 +6,7 @@
 <Para>
 Installing from binary distributions is easiest, and recommended!
 (Why binaries?  Because GHC is a Haskell compiler written in Haskell,
-so you've got to ``bootstrap'' it, somehow.  We provide
+so you've got to &ldquo;bootstrap&rdquo; it, somehow.  We provide
 machine-generated C-files-from-Haskell for this purpose, but it's
 really quite a pain to use them.  If you must build GHC from its
 sources, using a binary-distributed GHC to do so is a sensible way to
@@ -27,7 +27,7 @@ so binary distributions allow you to install them without having a Haskell compi
 </Para>
 
 <Para>
-Binary distributions come in ``bundles,'' one bundle per file called
+Binary distributions come in &ldquo;bundles,&rdquo; one bundle per file called
 <Literal>&lt;bundle&gt;-&lt;platform&gt;.tar.gz</Literal>.  (See the building guide for the definition of a platform.)  Suppose that you untar a binary-distribution bundle, thus:
 </Para>
 
@@ -35,8 +35,7 @@ Binary distributions come in ``bundles,'' one bundle per file called
 
 <Screen>
 % cd /your/scratch/space
-% gunzip &#60; ghc-x.xx-sun-sparc-solaris2.tar.gz | tar xvf -
-</Screen>
+% gunzip &#60; ghc-x.xx-sun-sparc-solaris2.tar.gz | tar xvf -</Screen>
 
 </Para>
 
@@ -209,8 +208,7 @@ moment
 <Screen>
 % cd /your/scratch/space
 % gunzip &#60; ghc-x.xx-sun-sparc-solaris2.tar.gz | tar xvf -
-% gunzip &#60; happy-x.xx-sun-sparc-sunos4.tar.gz | tar xvf -
-</Screen>
+% gunzip &#60; happy-x.xx-sun-sparc-sunos4.tar.gz | tar xvf -</Screen>
 
 </Para>
 
@@ -239,9 +237,6 @@ directory to <Literal>fptools</Literal> and typing <Literal>./configure</Literal
 <Para>
 <IndexTerm><Primary>installing in-place</Primary></IndexTerm>
 <IndexTerm><Primary>in-place installation</Primary></IndexTerm>
-</Para>
-
-<Para>
 You can now either start using the tools <Emphasis>in-situ</Emphasis> without going
 through any installation process, just type <Literal>make in-place</Literal> to set the
 tools up for this. You'll also want to add the path which <Literal>make</Literal> will
@@ -357,7 +352,7 @@ stuff in your bin directory.
 <ListItem>
 
 <Para>
- Once done, test your ``installation'' as suggested in 
+ Once done, test your &ldquo;installation&rdquo; as suggested in 
 <XRef LinkEnd="sec-GHC-test">.  Be sure to use a <Literal>-v</Literal>
 option, so you can see exactly what pathnames it's using.
 
@@ -376,7 +371,7 @@ When installing the user-invokable binaries, this installation
 procedure will install GHC as <Literal>ghc-x.xx</Literal> where <Literal>x.xx</Literal> is the version
 number of GHC.  It will also make a link (in the binary installation
 directory) from <Literal>ghc</Literal> to <Literal>ghc-x.xx</Literal>.  If you install multiple versions
-of GHC then the last one ``wins'', and ``<Literal>ghc</Literal>'' will invoke the last
+of GHC then the last one &ldquo;wins&rdquo;, and &ldquo;<Literal>ghc</Literal>&rdquo; will invoke the last
 one installed.  You can change this manually if you want.  But
 regardless, <Literal>ghc-x.xx</Literal> should always invoke GHC version <Literal>x.xx</Literal>.
 </Para>
@@ -389,7 +384,7 @@ regardless, <Literal>ghc-x.xx</Literal> should always invoke GHC version <Litera
 
 <Para>
 <IndexTerm><Primary>bundles, binary</Primary></IndexTerm>
-There are plenty of ``non-basic'' GHC bundles.  The files for them are
+There are plenty of &ldquo;non-basic&rdquo; GHC bundles.  The files for them are
 called <Literal>ghc-x.xx-&lt;bundle&gt;-&lt;platform&gt;.tar.gz</Literal>, where
 the <Literal>&lt;platform&gt;</Literal> is as above, and <Literal>&lt;bundle&gt;</Literal> is one
 of these:
@@ -421,7 +416,7 @@ You'll want this if you're into that kind of thing.
 <Term><Literal>gran</Literal>:</Term>
 <ListItem>
 <Para>
-The ``GranSim'' parallel-Haskell simulator
+The &ldquo;GranSim&rdquo; parallel-Haskell simulator
 (hmm&hellip; mainly for implementors).
 <IndexTerm><Primary>bundles, gransim</Primary></IndexTerm>
 <IndexTerm><Primary>gransim bundles</Primary></IndexTerm>
@@ -431,8 +426,8 @@ The ``GranSim'' parallel-Haskell simulator
 <Term><Literal>ticky</Literal>:</Term>
 <ListItem>
 <Para>
-``Ticky-ticky'' profiling; very detailed
-information about ``what happened when I ran this program''&mdash;really
+&ldquo;Ticky-ticky&rdquo; profiling; very detailed
+information about &ldquo;what happened when I ran this program&rdquo;&mdash;really
 for implementors.
 <IndexTerm><Primary>bundles, ticky-ticky</Primary></IndexTerm>
 <IndexTerm><Primary>ticky-ticky bundles</Primary></IndexTerm>
@@ -475,8 +470,7 @@ Compile the program, using the <Literal>-v</Literal> (verbose) flag to verify th
 libraries, etc., are being found properly:
 
 <Screen>
-% ghc -v -o hello Main.hs
-</Screen>
+% ghc -v -o hello Main.hs</Screen>
 
 </Para>
 
@@ -485,8 +479,7 @@ Now run it:
 
 <Screen>
 % ./hello
-Hello, world!
-</Screen>
+Hello, world!</Screen>
 
 </Para>
 
@@ -499,7 +492,7 @@ distributed in <Literal>ghc/misc/examples/nfib/</Literal> in a source distributi
 </Para>
 
 <Para>
-For more information on how to ``drive'' GHC, either do <Literal>ghc -help</Literal> or
+For more information on how to &ldquo;drive&rdquo; GHC, either do <Literal>ghc -help</Literal> or
 consult the User's Guide (distributed in several pre-compiled formats
 with a binary distribution, or in source form in
 <Literal>ghc/docs/users&lowbar;guide</Literal> in a source distribution).
@@ -559,8 +552,8 @@ do the following:
 </ItemizedList>
 
 <Para>
-Some environment variables are ``user variables'' and
-some are ``system variables''.  I'm not sure of the difference
+Some environment variables are &ldquo;user variables&rdquo; and
+some are &ldquo;system variables&rdquo;.  I'm not sure of the difference
 but both are changed though the same dialogue.
 </Para>
 
@@ -658,12 +651,6 @@ Create the following directories (if they aren't already there):
 
 <ListItem>
 <Para>
-Add the two <Filename>bin</Filename> directories to your <Constant>PATH</Constant>.
-</Para>
-</ListItem>
-
-<ListItem>
-<Para>
 Copy <Filename>bash.exe</Filename> from the <Filename>bin</Filename>
 directory of the cygwin tree
 (<Filename>cygwin-b20/H-i586-cygwin32/bin/bash.exe</Filename>) to
@@ -677,71 +664,92 @@ directory, but (a) some UNIX utils have got
 
 <ListItem>
 <Para>
-Add <Filename>C:\cygnus\cygwin-b20\H-i586-cygwin32\bin</Filename> to your <Constant>PATH</Constant>.
-<Command>bash</Command> needs this, and when it is invoked from <Filename>/bin</Filename> it can't
-find it.
+If you're an Emacs user and want to be able to run <Command>bash</Command>
+from within a shell buffer, see the <ULink URL="http://www.cs.washington.edu/homes/voelker/ntemacs.html">NT Emacs home page</ULink> for
+instructions on how to set this up.
 </Para>
 </ListItem>
 
-<ListItem>
+</ItemizedList>
+
 <Para>
-Set your <Constant>SHELL</Constant> user environment variable to <Filename>c:/bin/sh</Filename>.
+The following environment variables must be set:
 </Para>
-</ListItem>
 
-<ListItem>
 <Para>
-Set your <Filename>HOME</Filename> user environment variable to point to your
-home directory.  This is where, for example,
+<InformalTable>
+<TGroup cols="2">
+<ColSpec Align="Left" Colsep="0">
+<ColSpec Align="Left" Colsep="0">
+<TBody>
+
+<Row>
+<Entry><Constant>PATH</Constant></Entry>
+<Entry>System</Entry>
+<Entry><Para>
+Add <Filename>C:\cygnus\cygwin-b20\H-i586-cygwin32\bin</Filename>.
+<Command>bash</Command> needs this, and when it is invoked from <Filename>/bin</Filename> it can't
+find it. <Filename>c:/bin</Filename> and <Filename>c:/usr/local/bin</Filename> should also be added.
+</Para></Entry>
+</Row>
+
+<Row>
+<Entry><Constant>SHELL</Constant></Entry>
+<Entry>User</Entry>
+<Entry><Para>
+<Filename>c:/bin/sh</Filename>.
+</Para></Entry>
+</Row>
+
+<Row>
+<Entry><Constant>HOME</Constant></Entry>
+<Entry>User</Entry>
+<Entry><Para>
+Set to point to your home directory.  This is where, for example,
 <Command>bash</Command> will look for your <Filename>.bashrc</Filename>
 file.
-</Para>
-</ListItem>
-
-<ListItem>
-<Para>
-Set your <Constant>MAKE_MODE</Constant> user environment variable to <Literal>UNIX</Literal>.  If you don't do
+</Para></Entry>
+</Row>
+
+<Row>
+<Entry><Constant>MAKE_MODE</Constant></Entry>
+<Entry>User</Entry>
+<Entry><Para>
+Set to <Literal>UNIX</Literal>.  If you don't do
 this you get very weird messages when you type `<Command>make</Command>', such as:
-</Para>
-
-<Screen>
-/c: /c: No such file or directory
-</Screen>
-</ListItem>
-
-<ListItem>
-<Para>
-Set the <Constant>TMPDIR</Constant> user environment variable to
-<Filename>c:/tmp</Filename>. For some reason, Win2k invisibly sets
+</Para><Screen>
+/c: /c: No such file or directory</Screen></Entry>
+</Row>
+
+<Row>
+<Entry><Constant>TMPDIR</Constant></Entry>
+<Entry>User</Entry>
+<Entry><Para>
+Set to <Filename>c:/tmp</Filename>. For some reason, Win2k invisibly sets
 this variable to point to a temporary directory in your profile, that
 contains embedded spaces.  If GHC sees the <Constant>TMPDIR</Constant>
 variable set, it tries to use it for temporary files, but Cygwin
 doesn't grok filenames with spaces, so disaster results.
-</Para>
-<Para>
+</Para><Para>
 Furthermore, it seems that <Constant>TMPDIR</Constant> must be set to a directory
 in the same file system in which you invoke GHC.  Otherwise you get very werid messages
 when you invoke GHC, such as:
 <Screen>
-  does not exist
-  Action: openFile
-  Reason: file does not exist /tmp/ghc11068.cpp
-</Screen>
+does not exist
+Action: openFile
+Reason: file does not exist /tmp/ghc11068.cpp</Screen>
 We think this is due to a bug in Cygwin.
-</Para>
-</ListItem>
+</Para></Entry>
+</Row>
+</TBody>
 
-<ListItem>
-<Para>
-If you're an Emacs user and want to be able to run <Command>bash</Command>
-from within a shell buffer, see the <ULink URL="http://www.cs.washington.edu/homes/voelker/ntemacs.html">NT Emacs home page</ULink> for
-instructions on how to set this up.
+</TGroup>
+</InformalTable>
 </Para>
-</ListItem>
 
-</ItemizedList>
 </Sect3>
 
+
 <Sect3><Title>Perl5</Title>
 
 <Para>
@@ -847,8 +855,7 @@ bash$ /path/to/the/ghc/bin/directory/ghc-4.05 -o main main.hs
 ..
 bash$ ./main
 Hello, world!
-bash$ 
-</Screen>
+bash$ </Screen>
 
 <Para>
 OK, assuming that worked, you're all set. Go forth and write useful
@@ -903,8 +910,7 @@ When compiling up the <Literal>Hello World</Literal> example, the following happ
 bash$ /ghc/ghc-4.05/bin/ghc-4.05 main.hs
 &lt;stdin&gt;:0:25: Character literal '{-# LINE 1 "main.hs" -}' too long
 &lt;stdin&gt;:0:25:  on input: "'"
-bash$ 
-</Screen>
+bash$ </Screen>
 
 <Para>
 or
@@ -913,8 +919,7 @@ or
 <Screen>
 bash$ /ghc/ghc-4.05/bin/ghc-4.05 main.hs
 Program too big fit into memory under NT
-bash$ 
-</Screen>
+bash$ </Screen>
 </Question>
 
 <Answer>
@@ -944,8 +949,7 @@ files within the directory tree that the installer created:
 bin/ghc-4.xx   -- where xx is the minor release number
 bin/stat2resid
 bin/hstags
-lib/mkdependHS
-</Screen>
+lib/mkdependHS</Screen>
 
 <Para>
 For each of these files, you need to edit the first line from instead
@@ -965,7 +969,7 @@ of perl instead, a <ULink URL="http://cygutils.netpedia.net/">cygwin port</ULink
 
 <Question>
 <Para>
-<Function>System.getArgs</Function> always return the empty list, i.e. the following program always prints <Screen>"[]"</Screen>:
+<Function>System.getArgs</Function> always return the empty list, i.e. the following program always prints &ldquo;<Literal>[]</Literal>&rdquo;:
 </Para>
 
 <ProgramListing>
index f7a33fd..fb8e9e7 100644 (file)
@@ -7,7 +7,7 @@ This is a guide to using the Glasgow Haskell compilation (GHC) system. It is
 a batch compiler for the Haskell&nbsp;98 language, with support for various
 Glasgow-only extensions. In this document, we assume that GHC has been
 installed at your site as <Literal>ghc</Literal>.  A separate document,
-``Building and Installing the Glasgow Functional Programming Tools Suite'',
+&ldquo;Building and Installing the Glasgow Functional Programming Tools Suite&rdquo;,
 describes how to install <Literal>ghc</Literal>.
 </Para>
 
@@ -46,7 +46,7 @@ compilation systems, has several interacting parts:
 <Para>
 A <Emphasis>driver</Emphasis><IndexTerm><Primary>driver program</Primary></IndexTerm> 
 <Literal>ghc</Literal><IndexTerm><Primary>ghc</Primary></IndexTerm>&mdash;which
-you usually think of as ``the compiler''&mdash;is a program that merely
+you usually think of as &ldquo;the compiler&rdquo;&mdash;is a program that merely
 invokes/glues-together the other pieces of the system (listed below),
 passing the right options to each, slurping in the right libraries, etc.
 </Para>
@@ -70,7 +70,7 @@ The <Emphasis>Haskellised C pre-processor</Emphasis>
 <IndexTerm><Primary>C pre-processor, Haskellised</Primary></IndexTerm>
 <IndexTerm><Primary>pre-processor, Haskellised C</Primary></IndexTerm>
 <Literal>hscpp</Literal>,<IndexTerm><Primary>hscpp</Primary></IndexTerm> only needed by people requiring conditional
-compilation, probably for large systems.  The ``Haskellised'' part
+compilation, probably for large systems.  The &ldquo;Haskellised&rdquo; part
 just means that <Literal>&num;line</Literal> directives in the output have been
 converted into proper Haskell <Literal>&lcub;-&num; LINE ... -&rcub;</Literal> pragmas. You must give an explicit <Literal>-cpp</Literal> option 
 <IndexTerm><Primary>-cpp option</Primary></IndexTerm> for the C pre-processor to be invoked.
@@ -143,13 +143,13 @@ Parts of other <Emphasis>installed libraries</Emphasis> that you have at your si
 </Sect1>
 
 <Sect1 id="compile-what-really-happens">
-<Title>What really happens when I ``compile'' a Haskell program?
+<Title>What really happens when I &ldquo;compile&rdquo; a Haskell program?
 </Title>
 
 <Para>
 You invoke the Glasgow Haskell compilation system through the
 driver program <Literal>ghc</Literal>.<IndexTerm><Primary>ghc</Primary></IndexTerm> For example, if you had typed a
-literate ``Hello, world!'' program into <Literal>hello.lhs</Literal>, and you then
+literate &ldquo;Hello, world!&rdquo; program into <Literal>hello.lhs</Literal>, and you then
 invoked:
 
 <Screen>
@@ -181,7 +181,7 @@ input for
 <ListItem>
 
 <Para>
-The assembler (or that ubiquitous ``high-level assembler,'' a C
+The assembler (or that ubiquitous &ldquo;high-level assembler,&rdquo; a C
 compiler), which produces an object file and passes it to
 
 </Para>
@@ -201,8 +201,8 @@ the default output file named <Literal>a.out</Literal>.
 
 <Para>
 You have considerable control over the compilation process.  You feed
-command-line arguments (call them ``options,'' for short) to the
-driver, <Literal>ghc</Literal>; the ``types'' of the input files (as encoded in
+command-line arguments (call them &ldquo;options,&rdquo; for short) to the
+driver, <Literal>ghc</Literal>; the &ldquo;types&rdquo; of the input files (as encoded in
 their names' suffixes) also matter.
 </Para>
 
index 1463301..ab91f33 100644 (file)
@@ -552,7 +552,7 @@ data Integer = S# Int#             -- small integers
 </ProgramListing>
 
 <IndexTerm><Primary>Integer type</Primary></IndexTerm>
-The primitive ops to support large <Literal>Integers</Literal> use the ``pieces'' of the
+The primitive ops to support large <Literal>Integers</Literal> use the &ldquo;pieces&rdquo; of the
 representation, and are as follows:
 </Para>
 
@@ -681,7 +681,7 @@ type checker happy.
 
 <Para>
 Operations for indexing off of C pointers (<Literal>Addr&num;</Literal>s) to snatch values
-are listed under ``arrays''.
+are listed under &ldquo;arrays&rdquo;.
 </Para>
 
 </Sect2>
@@ -784,9 +784,9 @@ primitive ops compile to one machine instruction or thereabouts.
 </Para>
 
 <Para>
-We use the terms ``reading'' and ``writing'' to refer to accessing
+We use the terms &ldquo;reading&rdquo; and &ldquo;writing&rdquo; to refer to accessing
 <Emphasis>mutable</Emphasis> arrays (see <XRef LinkEnd="sect-mutable">), and
-``indexing'' to refer to reading a value from an <Emphasis>immutable</Emphasis>
+&ldquo;indexing&rdquo; to refer to reading a value from an <Emphasis>immutable</Emphasis>
 array.
 </Para>
 
@@ -861,7 +861,7 @@ serves to keep states from distinct threads distinct from one another.
 But the <Emphasis>only</Emphasis> effect of this parameterisation is in the type
 system: all values of type <Literal>State&num;</Literal> are represented in the same way.
 Indeed, they are all represented by nothing at all!  The code
-generator ``knows'' to generate no code, and allocate no registers
+generator &ldquo;knows&rdquo; to generate no code, and allocate no registers
 etc, for primitive states.
 </Para>
 
@@ -875,7 +875,7 @@ type State# s
 
 <Para>
 The type <Literal>GHC.RealWorld</Literal> is truly opaque: there are no values defined
-of this type, and no operations over it.  It is ``primitive'' in that
+of this type, and no operations over it.  It is &ldquo;primitive&rdquo; in that
 sense - but it is <Emphasis>not unlifted!</Emphasis> Its only role in life is to be
 the type which distinguishes the <Literal>IO</Literal> state transformer.
 </Para>
@@ -946,7 +946,7 @@ type MutableByteArray# s
 
 <Para>
 Mutable arrays can be allocated. Only pointer-arrays are initialised;
-arrays of non-pointers are filled in by ``user code'' rather than by
+arrays of non-pointers are filled in by &ldquo;user code&rdquo; rather than by
 the array-allocation primitive.  Reason: only the pointer case has to
 worry about GC striking with a partly-initialised array.
 </Para>
@@ -1026,7 +1026,7 @@ writeDoubleArray# :: MutableByteArray# s -&#62; Int# -&#62; Double# -&#62; State
 </Para>
 
 <Para>
-One can take ``equality'' of mutable arrays.  What is compared is the
+One can take &ldquo;equality&rdquo; of mutable arrays.  What is compared is the
 <Emphasis>name</Emphasis> or reference to the mutable array, not its contents.
 </Para>
 
index f04ec81..4970b09 100644 (file)
@@ -44,13 +44,13 @@ multiple processors, under a PVM (Parallel Virtual Machine) framework.
 </Para>
 
 <Para>
-Parallel Haskell is still relatively new; it is more about ``research
-fun'' than about ``speed.'' That will change.
+Parallel Haskell is still relatively new; it is more about &ldquo;research
+fun&rdquo; than about &ldquo;speed.&rdquo; That will change.
 </Para>
 
 <Para>
 Again, check Simon's Web page for publications about Parallel Haskell
-(including ``GUM'', the key bits of the runtime system).
+(including &ldquo;GUM&rdquo;, the key bits of the runtime system).
 </Para>
 
 <Para>
index 613a8bc..6e53999 100644 (file)
@@ -12,7 +12,7 @@ execution behaviour, so you can improve it.
 
 <Para>
 Any comments, suggestions and/or improvements you have are welcome.
-Recommended ``profiling tricks'' would be especially cool!
+Recommended &ldquo;profiling tricks&rdquo; would be especially cool!
 </Para>
 
 <Sect1 id="profiling-intro">
@@ -21,7 +21,7 @@ Recommended ``profiling tricks'' would be especially cool!
 
 <Para>
 The GHC approach to profiling is very simple: annotate the expressions
-you consider ``interesting'' with <Emphasis>cost centre</Emphasis> labels (strings);
+you consider &ldquo;interesting&rdquo; with <Emphasis>cost centre</Emphasis> labels (strings);
 so, for example, you might have:
 </Para>
 
@@ -40,8 +40,8 @@ f x y
 
 <Para>
 The costs of the evaluating the expressions bound to <VarName>output1</VarName>,
-<VarName>output2</VarName> and <VarName>output3</VarName> will be attributed to the ``cost
-centres'' <VarName>Pass1</VarName>, <VarName>Pass2</VarName> and <VarName>Pass3</VarName>, respectively.
+<VarName>output2</VarName> and <VarName>output3</VarName> will be attributed to the &ldquo;cost
+centres&rdquo; <VarName>Pass1</VarName>, <VarName>Pass2</VarName> and <VarName>Pass3</VarName>, respectively.
 </Para>
 
 <Para>
@@ -52,8 +52,8 @@ will be inherited by the scope which referenced the function <Function>f</Functi
 <Para>
 You can put in cost-centres via <Function>&lowbar;scc&lowbar;</Function> constructs by hand, as in the
 example above.  Perfectly cool.  That's probably what you
-<Emphasis>would</Emphasis> do if your program divided into obvious ``passes'' or
-``phases'', or whatever.
+<Emphasis>would</Emphasis> do if your program divided into obvious &ldquo;passes&rdquo; or
+&ldquo;phases&rdquo;, or whatever.
 </Para>
 
 <Para>
@@ -71,7 +71,7 @@ your own.
 
 <Para>
 To use profiling, you must <Emphasis>compile</Emphasis> and <Emphasis>run</Emphasis> with special
-options.  (We usually forget the ``run'' magic!&mdash;Do as we say, not as
+options.  (We usually forget the &ldquo;run&rdquo; magic!&mdash;Do as we say, not as
 we do&hellip;) Details follow.
 </Para>
 
@@ -139,8 +139,8 @@ all top-level, exported functions.
 <Para>
 <IndexTerm><Primary>-caf-all option</Primary></IndexTerm>
 The costs of all CAFs in a module are usually attributed to one
-``big'' CAF cost-centre. With this option, all CAFs get their own cost-centre.
-An ``if all else fails'' option&hellip;
+&ldquo;big&rdquo; CAF cost-centre. With this option, all CAFs get their own cost-centre.
+An &ldquo;if all else fails&rdquo; option&hellip;
 </Para>
 </ListItem>
 </VarListEntry>
@@ -447,8 +447,8 @@ centre) is selected by the option (or the option is not specified).
 
 <Para>
 When you run your profiled program with the <Option>-p</Option> RTS option <IndexTerm><Primary>-p
-RTS option</Primary></IndexTerm>, you get the following information about your ``cost
-centres'':
+RTS option</Primary></IndexTerm>, you get the following information about your &ldquo;cost
+centres&rdquo;:
 </Para>
 
 <Para>
@@ -477,7 +477,7 @@ different modules.
 <ListItem>
 <Para>
 How many times this cost-centre was entered; think
-of it as ``I got to the <Function>&lowbar;scc&lowbar;</Function> construct this many times&hellip;''
+of it as &ldquo;I got to the <Function>&lowbar;scc&lowbar;</Function> construct this many times&hellip;&rdquo;
 </Para>
 </ListItem>
 </VarListEntry>
@@ -485,7 +485,7 @@ of it as ``I got to the <Function>&lowbar;scc&lowbar;</Function> construct this
 <Term><Literal>&percnt;time</Literal>:</Term>
 <ListItem>
 <Para>
-What part of the time was spent in this cost-centre (see also ``ticks,''
+What part of the time was spent in this cost-centre (see also &ldquo;ticks,&rdquo;
 below).
 </Para>
 </ListItem>
@@ -495,7 +495,7 @@ below).
 <ListItem>
 <Para>
 What part of the memory allocation was done in this cost-centre
-(see also ``bytes,'' below).
+(see also &ldquo;bytes,&rdquo; below).
 </Para>
 </ListItem>
 </VarListEntry>
@@ -503,10 +503,10 @@ What part of the memory allocation was done in this cost-centre
 <Term><Literal>inner</Literal>:</Term>
 <ListItem>
 <Para>
-How many times this cost-centre ``passed control'' to an inner
+How many times this cost-centre &ldquo;passed control&rdquo; to an inner
 cost-centre; for example, <Literal>scc=4</Literal> plus <Literal>subscc=8</Literal> means
-``This <Literal>&lowbar;scc&lowbar;</Literal> was entered four times, but went out to
-other <Literal>&lowbar;scc&lowbar;s</Literal> eight times.''
+&ldquo;This <Literal>&lowbar;scc&lowbar;</Literal> was entered four times, but went out to
+other <Literal>&lowbar;scc&lowbar;s</Literal> eight times.&rdquo;
 </Para>
 </ListItem>
 </VarListEntry>
@@ -539,7 +539,7 @@ In addition you can use the <Option>-P</Option> RTS option <IndexTerm><Primary><
 <Term><Literal>ticks</Literal>:</Term>
 <ListItem>
 <Para>
-The raw number of time ``ticks'' which were
+The raw number of time &ldquo;ticks&rdquo; which were
 attributed to this cost-centre; from this, we get the <Literal>&percnt;time</Literal>
 figure mentioned above.
 </Para>
@@ -571,7 +571,7 @@ produce the following information:
 <IndexTerm><Primary>closures, profiling</Primary></IndexTerm>
 How many heap objects were allocated; these objects may be of varying
 size.  If you divide the number of bytes (mentioned below) by this
-number of ``closures'', then you will get the average object size.
+number of &ldquo;closures&rdquo;, then you will get the average object size.
 (Not too interesting, but still&hellip;)
 </Para>
 </ListItem>
@@ -855,7 +855,7 @@ distribution.
 </Sect1>
 
 <Sect1 id="ticky-ticky">
-<Title>Using ``ticky-ticky'' profiling (for implementors)
+<Title>Using &ldquo;ticky-ticky&rdquo; profiling (for implementors)
 </Title>
 
 <Para>
@@ -870,21 +870,21 @@ distribution.
 It is possible to compile Glasgow Haskell programs so that they will
 count lots and lots of interesting things, e.g., number of updates,
 number of data constructors entered, etc., etc.  We call this
-``ticky-ticky'' profiling,<IndexTerm><Primary>ticky-ticky profiling</Primary></IndexTerm>
+&ldquo;ticky-ticky&rdquo; profiling,<IndexTerm><Primary>ticky-ticky profiling</Primary></IndexTerm>
 <IndexTerm><Primary>profiling, ticky-ticky</Primary></IndexTerm> because that's the sound a Sun4 makes
 when it is running up all those counters (<Emphasis>slowly</Emphasis>).
 </Para>
 
 <Para>
 Ticky-ticky profiling is mainly intended for implementors; it is quite
-separate from the main ``cost-centre'' profiling system, intended for
+separate from the main &ldquo;cost-centre&rdquo; profiling system, intended for
 all users everywhere.
 </Para>
 
 <Para>
 To be able to use ticky-ticky profiling, you will need to have built
 appropriate libraries and things when you made the system.  See
-``Customising what libraries to build,'' in the installation guide.
+&ldquo;Customising what libraries to build,&rdquo; in the installation guide.
 </Para>
 
 <Para>
index e4f02d6..43a832f 100644 (file)
@@ -315,7 +315,7 @@ The RTS options related to profiling are described in <XRef LinkEnd="prof-rts-op
 
 <Para>
 These RTS options might be used (a)&nbsp;to avoid a GHC bug, (b)&nbsp;to see
-``what's really happening'', or (c)&nbsp;because you feel like it.  Not
+&ldquo;what's really happening&rdquo;, or (c)&nbsp;because you feel like it.  Not
 recommended for everyday use!
 </Para>
 
@@ -332,12 +332,12 @@ Sound the bell at the start of each (major) garbage collection.
 
 <Para>
 Oddly enough, people really do use this option!  Our pal in Durham
-(England), Paul Callaghan, writes: ``Some people here use it for a
+(England), Paul Callaghan, writes: &ldquo;Some people here use it for a
 variety of purposes&mdash;honestly!&mdash;e.g., confirmation that the
 code/machine is doing something, infinite loop detection, gauging cost
 of recently added code. Certain people can even tell what stage &lsqb;the
 program&rsqb; is in by the beep pattern. But the major use is for annoying
-others in the same office&hellip;''
+others in the same office&hellip;&rdquo;
 </Para>
 </ListItem>
 </VarListEntry>
@@ -347,17 +347,17 @@ others in the same office&hellip;''
 <Para>
 <IndexTerm><Primary>-r &lt;file&gt; RTS option</Primary></IndexTerm>
 <IndexTerm><Primary>ticky ticky profiling</Primary></IndexTerm>
-Produce ``ticky-ticky'' statistics at the end of the program run.
+Produce &ldquo;ticky-ticky&rdquo; statistics at the end of the program run.
 The <Filename>&lt;file&gt;</Filename> business works just like on the <Option>-S</Option> RTS option (above).
 </Para>
 
 <Para>
-``Ticky-ticky'' statistics are counts of various program actions
+&ldquo;Ticky-ticky&rdquo; statistics are counts of various program actions
 (updates, enters, etc.)  The program must have been compiled using
-<Option>-ticky</Option><IndexTerm><Primary>-ticky option</Primary></IndexTerm> (a.k.a. ``ticky-ticky profiling''),
+<Option>-ticky</Option><IndexTerm><Primary>-ticky option</Primary></IndexTerm> (a.k.a. &ldquo;ticky-ticky profiling&rdquo;),
 and, for it to be really useful, linked with suitable system
 libraries.  Not a trivial undertaking: consult the installation guide
-on how to set things up for easy ``ticky-ticky'' profiling.  For more
+on how to set things up for easy &ldquo;ticky-ticky&rdquo; profiling.  For more
 information, see <XRef LinkEnd="ticky-ticky">.
 </Para>
 </ListItem>
@@ -378,7 +378,7 @@ bits are set in <Literal>&lt;num&gt;</Literal>.  Only works if the RTS was compi
 <ListItem>
 <Para>
 <IndexTerm><Primary>-Z RTS option</Primary></IndexTerm>
-Turn <Emphasis>off</Emphasis> ``update-frame squeezing'' at garbage-collection
+Turn <Emphasis>off</Emphasis> &ldquo;update-frame squeezing&rdquo; at garbage-collection
 time.  (There's no particularly good reason to turn it off, except to
 ensure the accuracy of certain data collected regarding thunk entry
 counts.)
@@ -391,7 +391,7 @@ counts.)
 </Sect2>
 
 <Sect2 id="rts-hooks">
-<Title>``Hooks'' to change RTS behaviour
+<Title>&ldquo;Hooks&rdquo; to change RTS behaviour
 </Title>
 
 <Para>
@@ -402,7 +402,7 @@ counts.)
 
 <Para>
 GHC lets you exercise rudimentary control over the RTS settings for
-any given program, by compiling in a ``hook'' that is called by the
+any given program, by compiling in a &ldquo;hook&rdquo; that is called by the
 run-time system.  The RTS contains stub definitions for all these
 hooks, but by writing your own version and linking it on the GHC
 command line, you can override the defaults.
@@ -436,7 +436,7 @@ defined in <Filename>ghc/rts/RtsFlags.h</Filename> the the GHC source tree.
 
 <Para>
 You can also change the messages printed when the runtime system
-``blows up,'' e.g., on stack overflow.  The hooks for these are as
+&ldquo;blows up,&rdquo; e.g., on stack overflow.  The hooks for these are as
 follows:
 </Para>
 
@@ -511,7 +511,7 @@ What's printed out after a <Function>trace</Function> message.
 </Para>
 
 <Para>
-For example, here is the ``hooks'' code used by GHC itself:
+For example, here is the &ldquo;hooks&rdquo; code used by GHC itself:
 
 <ProgramListing>
 #include &#60;stdio.h&#62;
index e183562..dd38339 100644 (file)
@@ -3,7 +3,7 @@
 </Title>
 
 <Para>
-Please advise us of other ``helpful hints'' that should go here!
+Please advise us of other &ldquo;helpful hints&rdquo; that should go here!
 </Para>
 
 <Sect1 id="sooner">
@@ -67,9 +67,9 @@ bug.
 <Term>Don't use too much memory!</Term>
 <ListItem>
 <Para>
-As soon as GHC plus its ``fellow citizens'' (other processes on your
+As soon as GHC plus its &ldquo;fellow citizens&rdquo; (other processes on your
 machine) start using more than the <Emphasis>real memory</Emphasis> on your
-machine, and the machine starts ``thrashing,'' <Emphasis>the party is
+machine, and the machine starts &ldquo;thrashing,&rdquo; <Emphasis>the party is
 over</Emphasis>.  Compile times will be worse than terrible!  Use something
 like the csh-builtin <Command>time</Command> command to get a report on how many page
 faults you're getting.
@@ -203,8 +203,8 @@ Augustsson.)
 
 <Para>
 Please report any overly-slow GHC-compiled programs.  The current
-definition of ``overly-slow'' is ``the HBC-compiled version ran
-faster''&hellip;
+definition of &ldquo;overly-slow&rdquo; is &ldquo;the HBC-compiled version ran
+faster&rdquo;&hellip;
 </Para>
 
 <Para>
@@ -284,7 +284,7 @@ Specialize the overloading on key functions in your program.  See
 </ListItem>
 </VarListEntry>
 <VarListEntry>
-<Term>``But how do I know where overloading is creeping in?'':</Term>
+<Term>&ldquo;But how do I know where overloading is creeping in?&rdquo;:</Term>
 <ListItem>
 <Para>
 A low-tech way: grep (search) your interface files for overloaded
@@ -309,7 +309,7 @@ and, among other things, lazy pattern-matching is your enemy.
 </Para>
 
 <Para>
-(If you don't know what a ``strict function'' is, please consult a
+(If you don't know what a &ldquo;strict function&rdquo; is, please consult a
 functional-programming textbook.  A sentence or two of
 explanation here probably would not do much good.)
 </Para>
@@ -368,7 +368,7 @@ will be optimised away in most cases.
 </ListItem>
 </VarListEntry>
 <VarListEntry>
-<Term>``How do I find out a function's strictness?''</Term>
+<Term>&ldquo;How do I find out a function's strictness?&rdquo;</Term>
 <ListItem>
 <Para>
 Don't guess&mdash;look it up.
@@ -378,17 +378,17 @@ Don't guess&mdash;look it up.
 Look for your function in the interface file, then for the third field
 in the pragma; it should say <Literal>&lowbar;S&lowbar; &lt;string&gt;</Literal>.  The <Literal>&lt;string&gt;</Literal>
 gives the strictness of the function's arguments.  <Function>L</Function> is lazy
-(bad), <Function>S</Function> and <Function>E</Function> are strict (good), <Function>P</Function> is ``primitive'' (good),
+(bad), <Function>S</Function> and <Function>E</Function> are strict (good), <Function>P</Function> is &ldquo;primitive&rdquo; (good),
 <Function>U(...)</Function> is strict and
-``unpackable'' (very good), and <Function>A</Function> is absent (very good).
+&ldquo;unpackable&rdquo; (very good), and <Function>A</Function> is absent (very good).
 </Para>
 
 <Para>
-For an ``unpackable'' <Function>U(...)</Function> argument, the info inside
+For an &ldquo;unpackable&rdquo; <Function>U(...)</Function> argument, the info inside
 tells the strictness of its components.  So, if the argument is a
-pair, and it says <Function>U(AU(LSS))</Function>, that means ``the first component of the
+pair, and it says <Function>U(AU(LSS))</Function>, that means &ldquo;the first component of the
 pair isn't used; the second component is itself unpackable, with three
-components (lazy in the first, strict in the second \&#38; third).''
+components (lazy in the first, strict in the second \&#38; third).&rdquo;
 </Para>
 
 <Para>
@@ -448,7 +448,7 @@ operations (e.g., <Literal>eqInt&num;</Literal>) are good,&hellip;
 <ListItem>
 <Para>
 When you are <Emphasis>really</Emphasis> desperate for speed, and you want to get
-right down to the ``raw bits.''  Please see <XRef LinkEnd="glasgow-unboxed"> for some information about using unboxed
+right down to the &ldquo;raw bits.&rdquo;  Please see <XRef LinkEnd="glasgow-unboxed"> for some information about using unboxed
 types.
 </Para>
 </ListItem>
@@ -519,11 +519,11 @@ indicate that it's doing lots of garbage-collection (say, more than
 </Para>
 
 <Para>
-Decrease the ``go-for-it'' threshold for unfolding smallish
+Decrease the &ldquo;go-for-it&rdquo; threshold for unfolding smallish
 expressions.  Give a
 <Option>-funfolding-use-threshold0</Option><IndexTerm><Primary>-funfolding-use-threshold0
-option</Primary></IndexTerm> option for the extreme case. (``Only unfoldings with
-zero cost should proceed.'')  Warning: except in certain specialiised
+option</Primary></IndexTerm> option for the extreme case. (&ldquo;Only unfoldings with
+zero cost should proceed.&rdquo;)  Warning: except in certain specialiised
 cases (like Happy parsers) this is likely to actually
 <Emphasis>increase</Emphasis> the size of your program, because unfolding
 generally enables extra simplifying optimisations to be performed.
@@ -550,7 +550,7 @@ Use <Literal>strip</Literal> on your executables.
 </Para>
 
 <Para>
-``I think I have a space leak&hellip;''  Re-run your program with
+&ldquo;I think I have a space leak&hellip;&rdquo;  Re-run your program with
 <Option>+RTS -Sstderr</Option>,<IndexTerm><Primary>-Sstderr RTS option</Primary></IndexTerm> and remove all doubt!
 (You'll see the heap usage get bigger and bigger&hellip;)  &lsqb;Hmmm&hellip;this
 might be even easier with the <Option>-F2s</Option><IndexTerm><Primary>-F2s RTS option</Primary></IndexTerm> RTS
index f83a3fb..2a9dc56 100644 (file)
@@ -61,8 +61,8 @@ want.  (Usually, the last one applies.)
 </Para>
 
 <Para>
-File names with ``meaningful'' suffixes (e.g., <Filename>.lhs</Filename> or <Filename>.o</Filename>)
-cause the ``right thing'' to happen to those files.
+File names with &ldquo;meaningful&rdquo; suffixes (e.g., <Filename>.lhs</Filename> or <Filename>.o</Filename>)
+cause the &ldquo;right thing&rdquo; to happen to those files.
 </Para>
 
 <Para>
@@ -73,7 +73,7 @@ cause the ``right thing'' to happen to those files.
 <ListItem>
 <Para>
 <IndexTerm><Primary>lhs suffix</Primary></IndexTerm>
-A ``literate Haskell'' module.
+A &ldquo;literate Haskell&rdquo; module.
 </Para>
 </ListItem>
 </VarListEntry>
@@ -202,8 +202,8 @@ then go all the way through linking.  This table summarises:
 
 <Row>
 <Entry>Phase of the compilation system</Entry>
-<Entry>Suffix saying ``start here''</Entry>
-<Entry>Flag saying ``stop after''</Entry>
+<Entry>Suffix saying &ldquo;start here&rdquo;</Entry>
+<Entry>Flag saying &ldquo;stop after&rdquo;</Entry>
 <Entry>(suffix of) output file</Entry>
 </Row>
 
@@ -307,7 +307,7 @@ phase to file <Filename>foo</Filename>.
 </Para>
 
 <Para>
-Note: this ``feature'' can be counterintuitive:
+Note: this &ldquo;feature&rdquo; can be counterintuitive:
 <Command>ghc -C -o foo.o foo.hs</Command> will put the intermediate C code in the
 file <Filename>foo.o</Filename>, name notwithstanding!
 </Para>
@@ -318,7 +318,7 @@ EXOTICA: But the <Option>-o</Option> option isn't of much use if you have
 normally put in the same directory as their corresponding input file
 came from.  You may specify that they be put in another directory
 using the <Option>-odir &lt;dir&gt;</Option><IndexTerm><Primary>-odir &lt;dir&gt; option</Primary></IndexTerm> (the
-``Oh, dear'' option).  For example:
+&ldquo;Oh, dear&rdquo; option).  For example:
 </Para>
 
 <Para>
@@ -428,7 +428,7 @@ compilation.  By default, you get a standard set of warnings which are
 generally likely to indicate bugs in your program.  These are:
 <Option>-fwarn-overlpapping-patterns</Option>, <Option>-fwarn-duplicate-exports</Option>, and
 <Option>-fwarn-missing-methods</Option>.  The following flags are simple ways to
-select standard ``packages'' of warnings:
+select standard &ldquo;packages&rdquo; of warnings:
 </Para>
 
 <Para>
@@ -799,8 +799,8 @@ it looks.
 <ListItem>
 <Para>
 <IndexTerm><Primary>-i&lt;dirs&gt; option</Primary></IndexTerm>This flag
-prepends a colon-separated list of <Filename>dirs</Filename> to the ``import
-directories'' list.
+prepends a colon-separated list of <Filename>dirs</Filename> to the &ldquo;import
+directories&rdquo; list.
 See also <XRef LinkEnd="recomp"> for the significance of using
 relative and absolute pathnames in the <Option>-i</Option> list.
 </Para>
@@ -811,7 +811,7 @@ relative and absolute pathnames in the <Option>-i</Option> list.
 <Term><Option>-i</Option></Term>
 <ListItem>
 <Para>
-resets the ``import directories'' list back to nothing.
+resets the &ldquo;import directories&rdquo; list back to nothing.
 </Para>
 </ListItem>
 </VarListEntry>
@@ -888,7 +888,7 @@ record the difference in the interface file itself, the
 </Para>
 
 <Para>
-The <Filename>.hi</Filename> files from GHC contain ``usage'' information which changes
+The <Filename>.hi</Filename> files from GHC contain &ldquo;usage&rdquo; information which changes
 often and uninterestingly.  If you really want to see these changes
 reported, you need to use the
 <Option>-hi-diffs-with-usages</Option><IndexTerm><Primary>-hi-diffs-with-usages option</Primary></IndexTerm>
@@ -956,13 +956,13 @@ file was last compiled), GHC will be clever.  It compares the version
 numbers on the things it needs this time with the version numbers on
 the things it needed last time (gleaned from the interface file of the
 module being compiled); if they are all the same it stops compiling
-rather early in the process saying ``Compilation IS NOT required''.
+rather early in the process saying &ldquo;Compilation IS NOT required&rdquo;.
 What a beautiful sight!
 </Para>
 
 <Para>
-GHC <Emphasis>only</Emphasis> keeps detailed dependency information for ``user'' modules,
-not for ``library'' modules.  It distinguishes the two by a hack: a module
+GHC <Emphasis>only</Emphasis> keeps detailed dependency information for &ldquo;user&rdquo; modules,
+not for &ldquo;library&rdquo; modules.  It distinguishes the two by a hack: a module
 whose <Filename>.hi</Filename> file has an absolute path name is considered a library module,
 while a relative path name indicates a user module.  So if you have a
 multi-directory application, use <Emphasis>relative</Emphasis> path names in your
@@ -972,8 +972,8 @@ library modules.
 </Para>
 
 <Para>
-A path is considered ``absolute'' if it starts with ``<Filename>/</Filename>'', or
-``<Filename>A:/</Filename>'', or ``<Filename>A:\</Filename>'' (or ``<Filename>B:/</Filename>'', ``<Filename>B:\</Filename>'' etc).
+A path is considered &ldquo;absolute&rdquo; if it starts with &ldquo;<Filename>/</Filename>&rdquo;, or
+&ldquo;<Filename>A:/</Filename>&rdquo;, or &ldquo;<Filename>A:\</Filename>&rdquo; (or &ldquo;<Filename>B:/</Filename>&rdquo;, &ldquo;<Filename>B:\</Filename>&rdquo; etc).
 </Para>
 
 <Para>
@@ -1118,7 +1118,7 @@ interfaces in the first place (e.g., <Command>make Bar.o</Command> to create <Fi
 <Para>
  You may have to type <Command>make</Command> more than once for the dependencies
 to have full effect.  However, a <Command>make</Command> run that does nothing
-<Emphasis>does</Emphasis> mean ``everything's up-to-date.''
+<Emphasis>does</Emphasis> mean &ldquo;everything's up-to-date.&rdquo;
 
 </Para>
 </ListItem>
@@ -1126,7 +1126,7 @@ to have full effect.  However, a <Command>make</Command> run that does nothing
 
 <Para>
  This scheme will work with mutually-recursive modules but,
-again, it may take multiple iterations to ``settle.''
+again, it may take multiple iterations to &ldquo;settle.&rdquo;
 
 </Para>
 </ListItem>
@@ -1231,15 +1231,15 @@ Notice that we only put the declaration for the newtype <Literal>TA</Literal> in
 </Para>
 
 <Para>
-The number ``1'' after ``&lowbar;&lowbar;interface A'' gives the version number of module A;
-it is incremented whenever anything in A's interface file changes.  The ``404'' is
+The number &ldquo;1&rdquo; after &ldquo;&lowbar;&lowbar;interface A&rdquo; gives the version number of module A;
+it is incremented whenever anything in A's interface file changes.  The &ldquo;404&rdquo; is
 the version number of the interface file <Emphasis>syntax</Emphasis>; we change it when
 we change the syntax of interface files so that you get a better error message when
 you try to read an old-format file with a new-format compiler.
 </Para>
 
 <Para>
-The number ``1'' at the beginning of a declaration is the <Emphasis>version
+The number &ldquo;1&rdquo; at the beginning of a declaration is the <Emphasis>version
 number</Emphasis> of that declaration: for the purposes of <Filename>.hi-boot</Filename> files
 these can all be set to 1.  All names must be fully qualified with the
 <Emphasis>original</Emphasis> module that an object comes from: for example, the
@@ -1287,7 +1287,7 @@ construction of interface files, is (allegedly) in the works.
 </Para>
 
 <Para>
-The <Option>-O*</Option> options specify convenient ``packages'' of optimisation
+The <Option>-O*</Option> options specify convenient &ldquo;packages&rdquo; of optimisation
 flags; the <Option>-f*</Option> options described later on specify
 <Emphasis>individual</Emphasis> optimisations to be turned on/off; the <Option>-m*</Option>
 options specify <Emphasis>machine-specific</Emphasis> optimisations to be turned
@@ -1295,7 +1295,7 @@ on/off.
 </Para>
 
 <Sect2 id="optimise-pkgs">
-<Title><Option>-O*</Option>: convenient ``packages'' of optimisation flags.
+<Title><Option>-O*</Option>: convenient &ldquo;packages&rdquo; of optimisation flags.
 </Title>
 
 <Para>
@@ -1305,13 +1305,13 @@ on/off.
 <Para>
 There are <Emphasis>many</Emphasis> options that affect the quality of code
 produced by GHC.  Most people only have a general goal, something like
-``Compile quickly'' or ``Make my program run like greased lightning.''
-The following ``packages'' of optimisations (or lack thereof) should
+&ldquo;Compile quickly&rdquo; or &ldquo;Make my program run like greased lightning.&rdquo;
+The following &ldquo;packages&rdquo; of optimisations (or lack thereof) should
 suffice.
 </Para>
 
 <Para>
-Once you choose a <Option>-O*</Option> ``package,'' stick with it&mdash;don't chop and
+Once you choose a <Option>-O*</Option> &ldquo;package,&rdquo; stick with it&mdash;don't chop and
 change.  Modules' interfaces <Emphasis>will</Emphasis> change with a shift to a new
 <Option>-O*</Option> option, and you may have to recompile a large chunk of all
 importing modules before your program can again be run
@@ -1326,8 +1326,8 @@ safely (see <XRef LinkEnd="recomp">).
 <ListItem>
 <Para>
 <IndexTerm><Primary>-O* not specified</Primary></IndexTerm>
-This is taken to mean: ``Please compile quickly; I'm not over-bothered
-about compiled-code quality.''  So, for example: <Command>ghc -c Foo.hs</Command>
+This is taken to mean: &ldquo;Please compile quickly; I'm not over-bothered
+about compiled-code quality.&rdquo;  So, for example: <Command>ghc -c Foo.hs</Command>
 </Para>
 </ListItem>
 </VarListEntry>
@@ -1338,7 +1338,7 @@ about compiled-code quality.''  So, for example: <Command>ghc -c Foo.hs</Command
 <IndexTerm><Primary>-O option</Primary></IndexTerm>
 <IndexTerm><Primary>-O1 option</Primary></IndexTerm>
 <IndexTerm><Primary>optimise normally</Primary></IndexTerm>
-Means: ``Generate good-quality code without taking too long about it.''
+Means: &ldquo;Generate good-quality code without taking too long about it.&rdquo;
 Thus, for example: <Command>ghc -c -O Main.lhs</Command>
 </Para>
 </ListItem>
@@ -1349,12 +1349,12 @@ Thus, for example: <Command>ghc -c -O Main.lhs</Command>
 <Para>
 <IndexTerm><Primary>-O2 option</Primary></IndexTerm>
 <IndexTerm><Primary>optimise aggressively</Primary></IndexTerm>
-Means: ``Apply every non-dangerous optimisation, even if it means
-significantly longer compile times.''
+Means: &ldquo;Apply every non-dangerous optimisation, even if it means
+significantly longer compile times.&rdquo;
 </Para>
 
 <Para>
-The avoided ``dangerous'' optimisations are those that can make
+The avoided &ldquo;dangerous&rdquo; optimisations are those that can make
 runtime or space <Emphasis>worse</Emphasis> if you're unlucky.  They are
 normally turned on or off individually.
 </Para>
@@ -1389,7 +1389,7 @@ generator and bypass GCC altogether!
 </Para>
 
 <Para>
-This option will make GHC ``forget'' any <Option>-O</Option>ish options it has seen so
+This option will make GHC &ldquo;forget&rdquo; any <Option>-O</Option>ish options it has seen so
 far.  Sometimes useful; for example: <Command>make all EXTRA&lowbar;HC&lowbar;OPTS=-Onot</Command>.
 </Para>
 </ListItem>
@@ -1429,7 +1429,7 @@ something.  When we want to go for broke, we tend to use <Option>-O -fvia-C
 </Para>
 
 <Para>
-The easiest way to see what <Option>-O</Option> (etc.) ``really mean'' is to run with
+The easiest way to see what <Option>-O</Option> (etc.) &ldquo;really mean&rdquo; is to run with
 <Option>-v</Option>, then stand back in amazement.  Alternatively, just look at the
 <Literal>HsC&lowbar;minus&lt;blah&gt;</Literal> lists in the GHC driver script.
 </Para>
@@ -1491,7 +1491,7 @@ hard to do with command-line options.
 </Para>
 
 <Para>
-Here are some ``dangerous'' optimisations you <Emphasis>might</Emphasis> want to try:
+Here are some &ldquo;dangerous&rdquo; optimisations you <Emphasis>might</Emphasis> want to try:
 <VariableList>
 
 <VarListEntry>
@@ -1528,8 +1528,8 @@ using GHC's native code generator.
 <IndexTerm><Primary>unfolding, controlling</Primary></IndexTerm>
 (Default: 30) By raising or lowering this number, you can raise or
 lower the amount of pragmatic junk that gets spewed into interface
-files.  (An unfolding has a ``size'' that reflects the cost in terms
-of ``code bloat'' of expanding that unfolding in another module.  A
+files.  (An unfolding has a &ldquo;size&rdquo; that reflects the cost in terms
+of &ldquo;code bloat&rdquo; of expanding that unfolding in another module.  A
 bigger function would be assigned a bigger cost.)
 </Para>
 </ListItem>
@@ -1579,7 +1579,7 @@ it or not.
 
 <Para>
 OK, folks, these magic numbers `30', `8', and '2' are mildly
-arbitrary; they are of the ``seem to be OK'' variety.  The `8' is the
+arbitrary; they are of the &ldquo;seem to be OK&rdquo; variety.  The `8' is the
 more critical one; it's what determines how eager GHC is about
 expanding unfoldings.
 </Para>
@@ -1596,7 +1596,7 @@ expanding unfoldings.
 
 <Para>
 This option causes all constructor fields which are marked strict
-(i.e. ``!'') to be unboxed or unpacked if possible.  For example:
+(i.e. &ldquo;!&rdquo;) to be unboxed or unpacked if possible.  For example:
 </Para>
 
 <Para>
@@ -1729,7 +1729,7 @@ modules, maybe.  (Probably means you're in trouble&hellip;)
 <ListItem>
 <Para>
 (iX86 machines)<IndexTerm><Primary>-monly-N-regs option (iX86 only)</Primary></IndexTerm>
-GHC tries to ``steal'' four registers from GCC, for performance
+GHC tries to &ldquo;steal&rdquo; four registers from GCC, for performance
 reasons; it almost always works.  However, when GCC is compiling some
 modules with four stolen registers, it will crash, probably saying:
 
@@ -1923,8 +1923,8 @@ pre-processor with the <Option>-opt</Option> flags (see
 </Para>
 
 <Para>
-A small word of warning: <Option>-cpp</Option> is not friendly to ``string
-gaps''.<IndexTerm><Primary>-cpp vs string gaps</Primary></IndexTerm><IndexTerm><Primary>string gaps vs
+A small word of warning: <Option>-cpp</Option> is not friendly to &ldquo;string
+gaps&rdquo;.<IndexTerm><Primary>-cpp vs string gaps</Primary></IndexTerm><IndexTerm><Primary>string gaps vs
 -cpp</Primary></IndexTerm>.  In other words, strings such as the following:
 </Para>
 
@@ -1987,7 +1987,7 @@ THIS MAY CHANGE.  Meanwhile, options so sent are:
 <Row>
 <Entry>
 <Option>-dgcc-lint</Option> </Entry>
-<Entry> (hack) short for ``make GCC very paranoid''</Entry>
+<Entry> (hack) short for &ldquo;make GCC very paranoid&rdquo;</Entry>
 </Row>
 
 </TBody>
@@ -2113,7 +2113,7 @@ libraries automatically; these are:
 </Para>
 
 <Para>
-If you are using a Haskell ``system library'' (e.g., the POSIX
+If you are using a Haskell &ldquo;system library&rdquo; (e.g., the POSIX
 library), just use the <Option>-syslib posix</Option> option, and the correct code
 should be linked in.
 </Para>
@@ -2147,7 +2147,7 @@ Tell the linker to avoid shared libraries.
 <IndexTerm><Primary>consistency checking of executables</Primary></IndexTerm>
 By default, immediately after linking an executable, GHC verifies that
 the pieces that went into it were compiled with compatible flags; a
-``consistency check''.
+&ldquo;consistency check&rdquo;.
 (This is to avoid mysterious failures caused by non-meshing of
 incompatibly-compiled programs; e.g., if one <Filename>.o</Filename> file was compiled
 for a parallel machine and the others weren't.)  You may turn off this
@@ -2233,9 +2233,9 @@ into your Haskell modules.
 </Para>
 
 <Para>
-To run your parallel program, once PVM is going, just invoke it ``as
-normal''.  The main extra RTS option is <Option>-N&lt;n&gt;</Option>, to say how many
-PVM ``processors'' your program to run on.  (For more details of
+To run your parallel program, once PVM is going, just invoke it &ldquo;as
+normal&rdquo;.  The main extra RTS option is <Option>-N&lt;n&gt;</Option>, to say how many
+PVM &ldquo;processors&rdquo; your program to run on.  (For more details of
 all relevant RTS options, please see <XRef LinkEnd="parallel-rts-opts">.)
 </Para>
 
@@ -2264,14 +2264,14 @@ setenv PVM_DPATH $PVM_ROOT/lib/pvmd
 </Para>
 
 <Para>
-Creating and/or controlling your ``parallel machine'' is a purely-PVM
+Creating and/or controlling your &ldquo;parallel machine&rdquo; is a purely-PVM
 business; nothing specific to Parallel Haskell.
 </Para>
 
 <Para>
 You use the <Command>pvm</Command><IndexTerm><Primary>pvm command</Primary></IndexTerm> command to start PVM on your
 machine.  You can then do various things to control/monitor your
-``parallel machine;'' the most useful being:
+&ldquo;parallel machine;&rdquo; the most useful being:
 </Para>
 
 <Para>
@@ -2287,7 +2287,7 @@ machine.  You can then do various things to control/monitor your
 
 <Row>
 <Entry><Command>halt</Command></Entry>
-<Entry>kill off this ``parallel machine'' &amp; exit</Entry>
+<Entry>kill off this &ldquo;parallel machine&rdquo; &amp; exit</Entry>
 </Row>
 
 <Row>
@@ -2342,7 +2342,7 @@ The PVM documentation can tell you much, much more about <Command>pvm</Command>!
 
 <Para>
 With Parallel Haskell programs, we usually don't care about the
-results&mdash;only with ``how parallel'' it was!  We want pretty pictures.
+results&mdash;only with &ldquo;how parallel&rdquo; it was!  We want pretty pictures.
 </Para>
 
 <Para>
@@ -2376,7 +2376,7 @@ in <Filename>ghc/utils/parallel/</Filename>.
 <Title>Other useful info about running parallel programs</Title>
 
 <Para>
-The ``garbage-collection statistics'' RTS options can be useful for
+The &ldquo;garbage-collection statistics&rdquo; RTS options can be useful for
 seeing what parallel programs are doing.  If you do either
 <Option>+RTS -Sstderr</Option><IndexTerm><Primary>-Sstderr RTS option</Primary></IndexTerm> or <Option>+RTS -sstderr</Option>, then
 you'll get mutator, garbage-collection, etc., times on standard
index 53ec588..21cae2a 100644 (file)
@@ -271,8 +271,8 @@ that index to jump around among these definitions.
 </Para>
 
 <Para>
-Rather than scratch your head, saying ``Now where did we define
-`foo'?'', you just do (in Emacs) <Literal>M-. foo RET</Literal>, and You're There!
+Rather than scratch your head, saying &ldquo;Now where did we define
+`foo'?&rdquo;, you just do (in Emacs) <Literal>M-. foo RET</Literal>, and You're There!
 Some people go wild over this stuff&hellip;
 </Para>
 
@@ -319,7 +319,7 @@ section&hellip;)
 </Sect1>
 
 <Sect1 id="happy">
-<Title>``Yacc for Haskell'': <Command>happy</Command>
+<Title>&ldquo;Yacc for Haskell&rdquo;: <Command>happy</Command>
 </Title>
 
 <Para>
index 167fbd6..2b6bb34 100644 (file)
@@ -9,7 +9,7 @@
 
 <Para>
 This section lists Glasgow Haskell infelicities in its implementation
-of Haskell&nbsp;98.  See also the ``when things go wrong'' section
+of Haskell&nbsp;98.  See also the &ldquo;when things go wrong&rdquo; section
 (<XRef LinkEnd="wrong">)
 for information about crashes, space leaks, and other undesirable
 phenomena.
@@ -30,7 +30,7 @@ The limitations here are listed in Haskell-Report order (roughly).
 <Term>Very long <Literal>String</Literal> constants:</Term>
 <ListItem>
 <Para>
-May not go through.  If you add a ``string gap'' every
+May not go through.  If you add a &ldquo;string gap&rdquo; every
 few thousand characters, then the strings can be as long
 as you like.
 </Para>
@@ -45,7 +45,7 @@ option don't mix very well (see <XRef LinkEnd="c-pre-processor">).
 <Term>Very long literal lists:</Term>
 <ListItem>
 <Para>
-These may tickle a ``yacc stack overflow'' error in the parser.
+These may tickle a &ldquo;yacc stack overflow&rdquo; error in the parser.
 (It depends on the Yacc used to build your parser.)
 </Para>
 </ListItem>