Commit da2accf8 authored by Malcolm Wallace's avatar Malcolm Wallace
Browse files

Update lots of references to H'98 -> Prime, especially in build system.

I have taken the liberty of rejigging the build system somewhat, so that
we can auto-generate the PDF/HTML version of the Language Report every
time a patch is checked into darcs.
parent 37e445e2
RELEASE_DIR = haskell98-revised
RELEASE_DIR = haskell-prime-draft
JFP_DIR = jfp-release
(cd tools; make)
(cd report; make)
(cd tools; make)
(cd report; make release)
(cd libraries; make release)
(cd jfp-release; make)
cp h98-revised.html $(RELEASE_DIR)/index.html
cp haskell98-bugs.html h98.gif $(RELEASE_DIR)
cp report/haskell-prime-draft.html $(RELEASE_DIR)/index.html
cp hprime.png $(RELEASE_DIR)
gzip < jfp-release/ > $(RELEASE_DIR)/
gzip < jfp-release/h98-book.pdf > $(RELEASE_DIR)/h98-book.pdf.gz
......@@ -15,11 +15,20 @@ Then you should be able to say
to build the PS ( and HTML (in haskell-report-html)
versions. To get PDF, use ps2pdf on the PS version.
There are various other Makefile rules; for example 'make release' at
the top level is supposed to build a complete release of the "Revised
Haskell 98 Report", although it doesn't work out of the box. For
Haskell', we'll want to modify these Makefiles to do what we want in
due course.
When you check in a patch to the darcs repo, darcs will automatically
try to re-build the tools and report. If it fails for any reason, then
your patch will be rejected. (This is controlled by the top-level
Makefile target 'default', and the darcs preferences.) If you think
your patch is fine, but the build system is broken, then you might need
to login to and do some fixing by hand.
There are various other Makefile rules; for example 'make release' at
the top level was supposed to build a complete release of the "Revised
Haskell 98 Report", although it doesn't work out of the box. For
Haskell', we'll want to modify these Makefiles to do what we want in
due course.
......@@ -37,17 +46,14 @@ SOURCE FILES
Makefile Build a distribution of the Reports
report/h98-revised.html A summary page to glue all the outputs together
report/haskell-prime-draft.html A summary page to glue all the outputs together
report/haskell98-bugs.html A list of all the changes from the original
Haskell 98 Report to the Dec 2002 revised version.
Covers both the Language and Library report.
report/h98.gif A GIF for a Haskell 98 logo
report/hprime.png A PNG for a Haskell Prime logo
haskell98-revised/ A directory containing the distribution
haskell-prime-draft/ A directory containing the distribution
haskell-report-html/ A directory containing the HTML
......@@ -40,7 +40,7 @@ EXPAND = expand
# Files
RELEASE_DIR = ../haskell98-revised
RELEASE_DIR = ../haskell-prime-draft
JFP_DIR = ../jfp-release
PARTS = preface-jfp.tex $(PARTS_NO_PREFACE)
......@@ -100,11 +100,11 @@ haskell.dvi: haskell.tex ${PARTS} $(SYNTAX) ${PRELUDE}
# I have no idea why run_tex is run twice. SLPJ
html: index.html ${PARTS} ${SYNTAX} ${PRELUDE}
-mkdir haskell98-report-html
-mkdir haskell-report-html
cp index.html *.gif haskell98-report-html
cp index.html *.png *.gif haskell-report-html
haskell.dvi: haskell.tex haskell.ind ${PARTS} $(SYNTAX) ${PRELUDE} ${CODE} ${HEADERS}
......@@ -123,14 +123,15 @@ release: html
gzip < > $(RELEASE_DIR)/
cp haskell.pdf $(RELEASE_DIR)/haskell.pdf
cp -r haskell98-report-html $(RELEASE_DIR)
tar cvf - haskell98-report-html | gzip > $(RELEASE_DIR)/haskell98-report-html.tar.gz
cp h98-revised.html $(RELEASE_DIR)/index.html
cp haskell98-bugs.html h98.gif $(RELEASE_DIR)
cp haskell98-revised-bugs.html h98.gif $(RELEASE_DIR)
cp -r haskell-report-html $(RELEASE_DIR)
tar cvf - haskell-report-html | gzip > $(RELEASE_DIR)/haskell-report-html.tar.gz
cp *.png *.gif $(RELEASE_DIR)
#cp h98-revised.html $(RELEASE_DIR)/index.html
#cp haskell98-bugs.html h98.gif $(RELEASE_DIR)
#cp haskell98-revised-bugs.html h98.gif $(RELEASE_DIR)
publish-pdf: report.pdf
gzip < report.pdf > y:Haskell/haskell98-report/report.pdf.gz
gzip < report.pdf > y:Haskell/haskell-report/report.pdf.gz
......@@ -142,7 +143,7 @@ veryclean: clean
$(RM) *.dvi *.log *.aux *.ilg *.blg *.toc ${PARTS} $(SYNTAX) \
haskell.tex haskell.pdf *.o lex.yy.c haskell98-report-html/*
haskell.tex haskell.pdf *.o lex.yy.c haskell-report-html/*
cp haskell.ind haskell.ind.two-sided
echo "Don't delete the Prelude*.tex files"
echo "Not everyone has \"perl\" to re-make them"
This is the Haskell 1.4 report, source distribution.
This is the Haskell Prime report, source distribution.
This has all files needed to generate either the postscript or the
html version of the Haskell report. Some of these files are generated
......@@ -12,7 +12,7 @@ makeindex, and dvips.
To generate the html report you need Hugs 1.4 (probably any Haskell
1.4 compiler will do).
To chage the date on the report, you must change:
To change the date on the report, you must change:
* haskell.verb (line 429-ish)
* index.html (line 8-ish)
* html.config (~foot item)
<TITLE>Haskell 98: The Revised Report</title></head>
<div align=center>
<img src="h98.gif" alt="Haskell 98">
<h1>Haskell 98: The Revised Report (Jan 2003)</h1>
The Haskell 98 Report has undergone an extensive process of revision since its publication
in January 1999. This process converged in January 2003, producing the Revised Report.
The Revised Report is published by Cambridge University Press, as a book
<a href="">"Haskell 98 language
and libraries: the Revised Report"</a>, and also as a Special Issue of the Journal of Functional
Programming 13(1) Jan 2003.
The text and sources of the Report are neverthless still available online, as follows:
<p><li> The Haskell 98 Report (revised)
<li> <a href="haskell98-report-html/index.html">HTML</a>
<li> <a href="">Gzipped Postscript</a>
<li> <a href="haskell.pdf">PDF</a>
<li> <a href="haskell98-revised-bugs.html">A complete list of all bugs</a> (found so far)
<li> <a href="haskell98-report-html.tar.gz">Gzipped tar bundle of the HTML sources</a> for local browsing.
<a href="haskell98-bugs.html">A complete list of all changes</a> made to both reports between the Jan 1999 publication
and the Revised Report (Dec 2002).
<li> The sources for the Report is in a
<a href="">
publicly visible CVS repository</a>.
<address>Simon Peyton Jones,</address>
<TITLE>The Haskell Prime Report: Working Draft</title></head>
<div align=center>
<img src="hprime.png" alt="Haskell Prime">
<h1>The Haskell Prime Report: <em>Working Draft</em></h1>
The Haskell Prime Report is a work in progress. This page collects
the current draft, as stored in the darcs repository. All the files
below are generated automatically from the draft sources.
<em>Do not rely on the text of this Report.</em> This is only a current
snapshot, and does not reflect the final version.
<p><li> The Haskell Prime Report (working draft)
<li> <a href="haskell-report-html/index.html">HTML</a>
<li> <a href="">Gzipped Postscript</a>
<li> <a href="haskell.pdf">PDF</a>
<!-- li> <a href="haskell98-revised-bugs.html">A complete list of all bugs</a> (found so far) -->
<li> <a href="haskell-report-html.tar.gz">Gzipped tar bundle of the HTML sources</a> for local browsing.
<li> The sources for the Report are in a
<a href="">
publicly visible darcs repository</a>.
This diff is collapsed.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<head><title>Haskell 98 (Revised Report): ERRATA</title></head>
<div align=center>
<img src="h98.gif" alt="Haskell 98">
<h2>Errata in the
<a href="">Revised Haskell 98 Language Report (2003)</a></h2>
The list below gives all known errors in "Haskell 98 Language and
Libraries: the Revised Report", published by Cambridge University Press
as a book, and also in the Journal of Functional Programming 13(1)
(Jan 2003). All page references are to these texts, which may differ
slightly from the online versions.
<li> [Dec 2005] <strong>Page 8, Section 2.2, Lexical Program Structure</strong>
The production for end-of-line <em>comment</em> appears to permit
the character sequence <tt>--:</tt> to introduce a comment, although
it should properly be permissible as a <em>varsym</em>.
The production can be fixed by changing it thus:
<li> [July 2004] <strong>Page 32, Section 3.17.2, Informal Semantics of
Pattern-Matching, case #6.</strong>
Case 6 says: "Matching against a constructor using labeled fields is
the same as matching ordinary constructor patterns except that the
fields are matched in the order they are named in the field list. All
fields listed must be declared by the constructor; fields may not
be named more than once. Fields not named by the pattern are ignored
(matched against _)."
You could interpret 'field list' to mean the order the fields appear
in the pattern, OR, the order in which the fields were declared.
The choice of interpretation affects termination behaviour.
The intention of the Report writers was to use the field order of the
pattern, not the declaration. Thus, the Report can be clarified by
changing the end of the first sentence above to read "the order they
are named in the pattern field list".
<p><li> [Jan 2005] <strong>Page 32, Section 3.17.2, Informal Semantics of
Pattern-Matching, case #6.</strong>
Case 6 begins: "Matching against a constructor using labeled fields is
..." To some readers, this could appear to invert the sense of
matching, which in all other places is used consistently to mean
matching a pattern against a value, not a value against a pattern.
<p>The proposed fix is to change the start of the sentence to read:
"Matching a constructor pattern using labeled fields is ..."
<p><li> [July 2004] <strong>Page 55, Section 4.4.2, Fixity
Declarations.</strong> The operator <tt>=&lt;&lt;</tt> defined
in the Prelude is missing from Table 4.1 - it has precedence 1,
right-associative. Also, in the HTML version (but not the printed
versions), Table 4.1 is numbered in its caption as Table 2, although
it continues to be referred to as Table 4.1 in the text.
<p><li> [May 2003] <strong>Page 89, Section 6.3.4, The Enum Class.</strong>
Section 6.3.4 states: "For all four of these Prelude numeric types,
all of the <tt>enumFrom</tt> family of functions are strict in all
their arguments".
Alas, this contradicts the code for the Prelude in Chapter 8 for
<tt>Float</tt> and <tt>Double</tt>. In particular, the instances for
<tt>enumFrom</tt> and <tt>enumFromThen</tt> for <tt>Float</tt> and
<tt>Double</tt> are defined in terms of <tt>numericEnumFrom</tt>,
<tt>numericEnumFromThen</tt>, which are not strict (see p113).
They both deliver an infinite list even if their argument is undefined.
The fix is presumably to add a <tt>seq</tt> to the instances for
<tt>Float</tt> and <tt>Double</tt>.
<p><li> [June 2003] <strong>Page 95, Section 6.4.6, Coercions
and Component Extraction.</strong> The specification for
<tt>properFraction</tt> does not deal properly with the case where
<em>x</em> is zero. Here is a suggested rewording:
"The function <tt>properFraction</tt> takes a real fractional number
x and returns a pair <em>(n,f)</em> such that <em>x = n+f</em>, and:
<em>n</em> is an integral number; <em>f</em> is a fraction with the
same type as <em>x</em> and with absolute value less than 1; either
<em>n</em> is zero or <em>n</em> has the same sign as <em>x</em>;
and either <em>f</em> is zero or <em>f</em> has the same sign as
<p><li> [Feb 2003] <strong>Page 123, Section 8.2, PreludeText.</strong>
In the definition of <tt>lex</tt> make the following changes:
<li> Replace <tt>isAlpha</tt> in the third guard by <tt>isIdInit</tt>.
<li> In the definition of <tt>isSingle</tt>, remove the underscore
'_' from the quoted list.
<li> Add the following local definition:
isIdInit c = isAlpha c || c == '_'
[These changes reflect the fact that an identifier can start with
an underscore.]
<p><li> [Sept 2004] <strong>Page 136, Chapter 9.5, Context-Free
Syntax.</strong> The third production for <em>export</em> does
not match the production and explanation given earlier in Section 5.2.
Replace the <em>qvar</em> in parentheses after <em>qtycls</em> with
<p><li> [Aug 2005] <strong>Page 152, Chapter 12, Rational
Numbers.</strong> The function <tt>approxRational</tt> actually
returns the simplest rational number within the given <em>closed</em>
interval, not the open interval.
<p><li> [March 2003] <strong>Page 170, Chapter 15, Indexing
operations.</strong> Replace the (bogus) law
map index (range (l,u)) = [0..rangeSize (l,u)]
map (index (l,u)) (range (l,u)) = [0 .. rangeSize (l,u) - 1]
<p><li> [March 2003] <strong>Page 194, line -9, Chapter 19, Character
utilities.</strong> Replace "converts the to the character it
encodes" by "converts the string to the character it encodes".
<p><li> [July 2003] <strong>Index to the online version (only).</strong>
<li>The type for <tt>either</tt> is missing.
The type for <tt>print</tt> should be
print :: Show a =&gt; a -&gt; IO ()
<p><li> [June 2005] <strong>Index to the printed version (only).</strong>
<li>There is no entry for <em>keywords</em> of the language, which should
cross-refer to <em>reservedid</em>.
<li>There is no index entry for the <tt>where</tt> keyword.
Relevant page numbers are 10, 13, 56, and 58.
<address><strong>maintainer:</strong> Malcolm Wallace,
<a href=""></a></address>
files= preface-jfp.verb
files= intro.verb
......@@ -34,21 +34,21 @@ files=random.verb
~top=<a href="index.html">top</a>
~style=<body bgcolor="#ffffff">
~id=<i>The Haskell 98 Report</i><br>
~id=<i>The Haskell Prime Report</i><br>
~back=<a href="~prev.html">back</a>
~nxt=<a href="~next.html">next</a>
~funct=<a href="prelude-index.html">function index</a>
~contents=<a href="index98.html">contents</a>
~foot=<br><font size=2>December 2002</font>
~contents=<a href="indexprime.html">contents</a>
~foot=<br><font size=2>Working Draft (2007)</font>
~footer=<hr>~id~top | ~back | ~nxt | ~contents | ~funct ~foot
~sfooter=<hr>~id~top | back | ~nxt | ~contents | ~funct ~foot
~efooter=<hr>~id~top | ~back | next | ~contents | ~funct ~foot
~header=~style ~id ~top | ~back | ~nxt | ~contents | ~funct <br><hr>
~sheader=~style ~id ~top | back | ~nxt | ~contents | ~funct <br><hr>
~eheader=~style ~id ~top | ~back | next | ~contents | ~funct <br><hr>
~indexHeader=<title>Haskell 98 Contents</title>~style ~id~top | ~funct <br><h3>Haskell 98 Report: Contentsx</h3>
~indexHeader=<title>Haskell Prime Contents</title>~style ~id~top | ~funct <br><h3>Haskell Prime Report: Contents</h3>
<title>The Haskell 98 Language Report</title>
<title>The Haskell Prime Language Report</title>
<body background="lambda.gif">
<div align=center>
<img src="h98.gif" alt="Haskell 98">
<img src="hprime.png" alt="Haskell Prime">
<h1>Haskell 98 Language and Libraries</h1>
<h1>The Revised Report</h1>
<h3 align="center">December 2002</h3>
<h1>Haskell Prime Language and Libraries</h1>
<h3 align="center">Working Draft (2007)</h3>
<h2>Brief Table of Contents</h2>
<li><a href="index98.html">Full Table of Contents</a>
<li><a href="indexprime.html">Full Table of Contents</a>
<li><a href="preface-jfp.html">Preface</a>
......@@ -71,7 +70,7 @@
<div align=center>
<a href="">
Simon Peyton Jones</a> [editor], Microsoft Research, Cambridge <br>
Simon Peyton Jones</a>, Microsoft Research, Cambridge <br>
<a href="">
Lennart Augustsson</a>, Sandburst Corporation <br>
<a href="">
......@@ -19,7 +19,7 @@ doFile r f = catch
(do putStr ("Reading " ++ f ++ ".idx\n")
ls <-readFile (f ++ ".idx")
let output = expandAllRefs r (lines ls)
writeFile ("haskell98-report-html/" ++ f ++ ".html") (unlines output))
writeFile ("haskell-report-html/" ++ f ++ ".html") (unlines output))
(\err -> putStr ("Error: " ++ show err ++ "\n"))
-- This sets up the parts of the state that need to be reset at the start of
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment