[project @ 1999-11-01 16:06:34 by simonpj]
authorsimonpj <unknown>
Mon, 1 Nov 1999 16:06:35 +0000 (16:06 +0000)
committersimonpj <unknown>
Mon, 1 Nov 1999 16:06:35 +0000 (16:06 +0000)
Minor tweaks to intro, and description of RULES

ghc/docs/users_guide/glasgow_exts.vsgml
ghc/docs/users_guide/intro.vsgml

index ce80394..9830183 100644 (file)
@@ -1,5 +1,5 @@
 % 
-% $Id: glasgow_exts.vsgml,v 1.17 1999/10/28 07:53:13 simonpj Exp $
+% $Id: glasgow_exts.vsgml,v 1.18 1999/11/01 16:06:34 simonpj Exp $
 %
 % GHC Language Extensions.
 %
@@ -2085,9 +2085,14 @@ This rule will cause the compiler to go into an infinite loop.
 
 <item> GHC currently uses a very simple, syntactic, matching algorithm
 for matching a rule LHS with an expression.  It seeks a substitution
-which makes the LHS and expression syntactically equal modulo: alpha
-conversion, and (I think) eta conversion.  But not beta conversion (that's
-called higher-order matching).
+which makes the LHS and expression syntactically equal modulo alpha
+conversion.  The pattern (rule), but not the expression, is eta-expanded if 
+necessary.  (Eta-expanding the epression can lead to laziness bugs.)
+But not beta conversion (that's called higher-order matching).
+<p>
+Matching is carried out on GHC's intermediate language, which includes
+type abstractions and applications.  So a rule only matches if the
+types match too.  See Section <ref name="Specialisation" id="rule-spec"> below.
 
 <item> GHC keeps trying to apply the rules as it optimises the program.
 For example, consider:
@@ -2184,6 +2189,7 @@ If you want to write your own good consumers or producers, look at the
 Prelude definitions of the above functions to see how to do so.
 
 <sect2>Specialisation
+<label id="rule-spec">
 <p>
 
 Rewrite rules can be used to get the same effect as a feature
index a092c86..ce1ad3b 100644 (file)
@@ -3,8 +3,12 @@
 <p>
 
 This is a guide to using the Glasgow Haskell compilation (GHC) system.
-It is a batch compiler for the Haskell~1.4 language, with support for
+It is a batch compiler for the Haskell~98 language, with support for
 various Glasgow-only extensions.
+In this document, we assume that GHC has been installed at your site
+as @ghc@.  A separate document, ``Building and Installing the 
+Glasgow Functional Programming Tools Suite'',
+describes how to install @ghc@.
 
 Many people will use GHC very simply: compile some
 modules---@ghc -c -O Foo.hs Bar.hs@; and link them---
@@ -17,8 +21,7 @@ ghc -c -O -fno-foldr-build -dcore-lint -fvia-C -ddump-simpl Foo.lhs
 </verb></tscreen>
 Stay tuned---all will be revealed!
 
-In this document, we assume that GHC has been installed at your site
-as @ghc@.  The rest of this section provide some tutorial information
+The rest of this section provide some tutorial information
 on batch-style compilation; if you're familiar with these concepts
 already, then feel free to skip to the next section.