From: simonpj Date: Mon, 1 Nov 1999 16:06:35 +0000 (+0000) Subject: [project @ 1999-11-01 16:06:34 by simonpj] X-Git-Tag: Approximately_9120_patches~5622 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=98eb01d18e4577226637efb9bf771b438d46d4f5;p=ghc-hetmet.git [project @ 1999-11-01 16:06:34 by simonpj] Minor tweaks to intro, and description of RULES --- diff --git a/ghc/docs/users_guide/glasgow_exts.vsgml b/ghc/docs/users_guide/glasgow_exts.vsgml index ce80394..9830183 100644 --- a/ghc/docs/users_guide/glasgow_exts.vsgml +++ b/ghc/docs/users_guide/glasgow_exts.vsgml @@ -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. 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). +

+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 below. 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. Specialisation +

Rewrite rules can be used to get the same effect as a feature diff --git a/ghc/docs/users_guide/intro.vsgml b/ghc/docs/users_guide/intro.vsgml index a092c86..ce1ad3b 100644 --- a/ghc/docs/users_guide/intro.vsgml +++ b/ghc/docs/users_guide/intro.vsgml @@ -3,8 +3,12 @@

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 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.