New bug discovered in the context-free syntax.
authorMalcolm Wallace <Malcolm.Wallace@cs.york.ac.uk>
Thu, 16 Sep 2004 10:23:28 +0000 (10:23 +0000)
committerMalcolm Wallace <Malcolm.Wallace@cs.york.ac.uk>
Thu, 16 Sep 2004 10:23:28 +0000 (10:23 +0000)
(Also tidy source to 80-column width.)

report/haskell98-revised-bugs.html

index f1dd49c..bf68755 100644 (file)
@@ -9,10 +9,11 @@
 <h2>Errata in the 
 <a href="http://haskell.org/definition/">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.
+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.
 
 <ul>
 <li> [July 2004] <strong>Page 32, Section 3.17.2, Informal Semantics of
@@ -33,61 +34,79 @@ 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".
 
-<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> [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.
 
-<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".
+<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".
 <p>
-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).
+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.
 <p>
-The fix is presumably to add a <tt>seq</tt> to the instances for <tt>Float</tt> and <tt>Double</tt>.
+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:
 
-<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:
 <p>
-"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 <em>x</em>."
+"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
+<em>x</em>."
 
 <p><li> [Feb 2003] <strong>Page 123, Section 8.2, PreludeText.</strong>
-In the defintion of <tt>lex</tt> make the following changes:
+In the definition of <tt>lex</tt> make the following changes:
 <ul>
 <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> In the definition of <tt>isSingle</tt>, remove the underscore
+     '_' from the quoted list.
 <li> Add the following local definition:
 <pre>
   isIdInit c = isAlpha c || c == '_'
 </pre>
 </ul>
-[These changes reflect the fact that an identifier can start with an underscore.]
+[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
+<em>var</em>.
 
-<p><li> [March 2003] <strong>Page 170, Chapter 15 Indexing operations.</strong>.  
-Replace the (bogus) law "<tt>map index (range (l,u)) = [0..rangeSize (l,u)]</tt>" by
+
+<p><li> [March 2003] <strong>Page 170, Chapter 15 Indexing
+operations.</strong>  Replace the (bogus) law
+<pre>
+  map index (range (l,u)) = [0..rangeSize (l,u)]
+</pre>
+by
 <pre>
   map (index (l,u)) (range (l,u)) = [0 .. rangeSize (l,u) - 1]
 </pre>
 
 <p><li> [March 2003] <strong>Page 194, line -9, Chapter 19 Character
-utilities.</strong>.  Replace "converts the to the character it
+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>.
+<p><li> [July 2003] <strong>Index to the online version (only).</strong>
 <ul>
 <li>The type for <tt>either</tt> is missing.
 <li>
@@ -97,6 +116,7 @@ The type for <tt>print</tt> should be
 </pre>
 </ul>
 </ul>
+
 <hr>
 <address><strong>maintainer:</strong> Malcolm Wallace,
          <a href="mailto:Malcolm.Wallace@cs.york.ac.uk">