\font\tenbxsl=cmbxsl10
\font\ninerm=cmr9
\font\ninesl=cmsl9
\font\logosl=logosl10
\centerline{\bf Errata for \tenbxsl Literate Programming}
\centerline{\sl (last updated 31 December 2002)}
% MUST USE \newbugonpage FOR ANY NEW STUFF!
\smallskip
\noindent Most of the corrections below were made in the third printing;
all of them except those marked with an asterisk ({\bf*})
were made in the fourth printing.
\bigskip

\font\manfnt=manfnt
\def\becomes{\ifmmode\ \hbox\fi{\manfnt y}\ } % wiggly arrow indicates a change
\def\\#1{\leavevmode\hbox{\it#1\/\kern.05em}} % italic type for identifiers
\def\bugonpage #1, #2:
  {\medbreak\noindent{\bf Page #1, }#2\par\nobreak\smallskip\noindent}
\def\newbugonpage #1, #2:
  {\medbreak\noindent{\bf \llap*Page #1, }#2\par\nobreak\smallskip\noindent}

\newbugonpage v, line 2 from the bottom:
{\ninerm Sons Ltd.\ \becomes Sons, Ltd.}

\newbugonpage 2, line 13:
When {\sl Communications\/} \dots\ 1959 \becomes
Shortly after {\sl Communications of the ACM\/} began publication in 1958

\bugonpage 9, line 6:
when in \becomes when

\newbugonpage 12, line 11 from the bottom:
craftman's work \becomes craftsman's work

\newbugonpage 14, bottom line:
ming.'' \becomes ming,''

\newbugonpage 15, line 19:
119-150 \becomes 119--150

\newbugonpage 26, line 17 from the bottom:
{\bf while} $A[i]\ne x$ do \becomes
{\bf while} $A[i]\ne x$ {\bf do}

\newbugonpage 32, line 10 from the bottom:
$i:=i-1$ \becomes $i:=i-1$;

\newbugonpage 36, line 15:
PL360 [96] \becomes PL360 [96])

\bugonpage 38, line 16 from the bottom:
Bohm \becomes B\"ohm

\newbugonpage 40, line 11:
$A[j]:=x$; \becomes
$A[j]:=x$; $L[j]:=0$; $R[j]:=0$; $j:=j+1$;

\bugonpage 41, line 10 from the bottom:
$\langle\,$situation$\,\rangle_n$; \becomes
$\langle\,$situation$\,\rangle_n$:

\newbugonpage 42, lines 10 and 12 from the bottom:
$i:=L[i]$ \becomes $i:=L[i]$; \qquad\qquad
$i:=R[i]$ \becomes $i:=R[i]$;

\newbugonpage 43, line 1:
5{\sl c} \becomes 5c

\newbugonpage 43, lines 22 and 24:
{\bf goto} \becomes {\bf go to}

\bugonpage 44, line 15 from the bottom:
{\it absent\/}; \becomes {\it absent\/}:

\newbugonpage 45, lines 11 and 12 from the bottom:
print \becomes {\it print}

\newbugonpage 47, line 21:
{\bf do} S \becomes {\bf do} $S$ \qquad\qquad
{\bf until} B \becomes {\bf until} $B$

\newbugonpage 47, line 14 from the bottom:
If S is \becomes If $S$ is

\bugonpage 48, line 13:
[94] \becomes [95]

\bugonpage 49, line 10 from the bottom:
$\{Q\land B\}$ \becomes $\{Q\land \overline B\}$

\newbugonpage 50, line 7:
{\bf repeat\kern.05em}: \becomes {\bf repeat\kern.05em};

\bugonpage 51, lines 6 and 7 from the bottom:
recursion wasn't \dots~table of contents. \becomes
the recursion chapter wasn't Chapter~3, since it belongs conceptually
near the very beginning.

\newbugonpage 52, line 1:
on the Example 6 \becomes on Example 6

\bugonpage 60, line 17:
$A[j]${\bf then} \becomes $A[j]$ {\bf then}

\newbugonpage 60, line 19:
$i:=i+1$ \becomes $i:=i+1$;

\bugonpage 60, line 9 from the bottom:
{\bf repeat go} \becomes {\bf repeat}; {\bf go}

\bugonpage 64, bottom line:
$A[j]<v$ \becomes $A[j]>v$

\newbugonpage 69, line 14:
if tests \becomes {\bf if\/} tests

\newbugonpage 72, line 15 from the bottom:
[12]. \becomes [12].)

\newbugonpage 81, line 2 from the bottom:

{\tt FOUND}; \becomes {\tt FOUND;}

\newbugonpage 82, line 17:
{\ninerm GOTO}' \becomes {\ninerm GOTO}

\bugonpage 83, line 3:
Bohm \becomes B\"ohm

\newbugonpage 83, line 8 from the bottom:
humble programmer,' \becomes humble programmer,''

\newbugonpage 83, line 5 from the bottom:
[Ed].\ \becomes [Ed.]

\newbugonpage 85, line 20:
{\sl Practice and Experience\/} \becomes {\sl Practice \& Experience\/}

\newbugonpage 85, line 8 from the bottom:
{\sl A review of `Structured Programming'}, \becomes
``A review of {\sl Structured Programming},''

\newbugonpage 86, lines 14 and 15:
Journal of the {\ninerm ACM} {\bf 27} (1980), 123--127. \becomes
{\sl Journal of the {\ninesl ACM}\/ \bf 27} (1980), 123--127.]

\newbugonpage 86, line 21:
site de Liege, Service Informatique, Liege \becomes
sit\'e de Li\`ege, Service d'Informatique, Li\`ege

\newbugonpage 87, bottom line:
York: \kern-.7emSpringer \becomes York:\ Springer

\newbugonpage 88, line 5:
{\sl Practice and Experience\/} \becomes {\sl Practice \& Experience\/}

\newbugonpage 89, line 7:
{\bf14}, 4 \becomes {\bf14},4

\bugonpage 89, line 13:
Progamming \becomes Programming

\newbugonpage 91, line 6 from the bottom:
``$i$ precedes $j$''. \becomes ``$i$ precedes $j$.''

\newbugonpage 95, lines 16 and following:
all these lines (except the line 8 from the bottom) should be
indented one quad less

\newbugonpage 97, line 15:
{\ninesl ACM\/\bf14} \becomes {\ninesl ACM\/ \bf14}

\newbugonpage 101, line 13:
{\ninerm ADA} \becomes Ada

\bugonpage 109, line 9:
$\sqrt k/\!\ln k$ \becomes $\sqrt{k/\!\ln k}$

\bugonpage 127, line 12:
beings \becomes begins

\bugonpage 132, line 23:
gave a {\tt DOC} \becomes gave {\tt DOC}

\newbugonpage 135, lines 8 and 9 from the bottom:
Liege, Service D'informatique (December, 1973). \becomes
Li\`ege, Service d'Informatique (December, 1973), 135~pp.

\newbugonpage 135, line 6 from the bottom:
(Eds.)\ \becomes [Eds.]

\newbugonpage 144, line 10 of section 1:
It's \becomes
(It works also when $M=N$; but the average running time is of order
$M+N(H_N-H_{N-M})$, which is linear in $M$ for $M\le{1\over2}N$ but
not when $M$ approaches~$N$. Users who want $M>{1\over2}N$ should
generate the complementary set of $N-M$ integers.)
It's

\bugonpage 145, line 7:
populatation \becomes population

\bugonpage 149, additional closing paragraph:
\begingroup\def\S{\mathhexbox278}
\indent
In a subsequent ``Programming Pearl,'' David Gries contributed his
own version of the sampling program above, with independent proofs of the
properties of ordered hashing for which $\S9$ had simply given a brief
reference to the literature. See {\sl Communications of the ACM\/ \bf30}
(April 1987), 284--289.
\endgroup

\bugonpage 151, line 4:
{\sl [Chapter 8]} \becomes {\sl [Chapter 5]}

\newbugonpage 157, line 10 from the bottom:
{\sl pu-ter\/} \becomes {\sl put-er}

\bugonpage 160, line 10 from the bottom:
$\approx .61803\\{trie\_size}$ \becomes $\approx .61803(\\{trie\_size}-52)$

\newbugonpage 204, and also pages 214, 216, 218, 224, 262:
[Adjust the spacing so that the top lines are aligned properly.]

\newbugonpage 231, line 13:
$p_1\ldots p_l$ \becomes $p_1\ldots p_{l-1}$

\bugonpage 237, line 22:
idea idea \becomes idea

\bugonpage 240, line 18:
inconsistences \becomes inconsistencies

\newbugonpage 249, line 17:
on February 1, \becomes early in February,

\bugonpage 258, restore a missing line after Figure 1:
Then \TeX\ suddenly had more than one user, and different kinds of

\bugonpage 271, line 12:
thesis [11] \becomes thesis

\newbugonpage 287, line 17:
form. \becomes form.$^4$

\newbugonpage 287, new bottom line:
$^4\,${\ninerm(Footnote added March 1999) \ See {\ninesl Digital
Typography}, Chapter 34.}

\newbugonpage 291, line 2:
1986) \becomes 1986),

\newbugonpage 294, line 2:
{\logosl METAFONT\/} {\sl debugging} \becomes {\sl debugging}

\newbugonpage 310, entry 409:
{\tt vfil} \becomes {\tt\char`\\vfil}

\newbugonpage 310, entry 418:
{\tt topmark} \becomes {\tt\char`\\topmark}

\newbugonpage 311, entry 434:
1352. \becomes 1352

\bugonpage 316, entry X102:
1078 \becomes \S1078 (and it belongs in the next-to-last column)

\bugonpage 316, entry X105:
shawing \becomes showing

\newbugonpage 321, entry X332:
{\tt sprint\char`\_cs} \becomes {\it sprint\_cs}

\newbugonpage 341, line 11:
135--137 \becomes 134--137

\newbugonpage 349, bad hyphenation on lines 9 and 10:
Praktis- che \becomes Prak- tische

\newbugonpage 353, line 5 from the bottom:
(1965) \becomes (1985)

\newbugonpage 354, line 10 from the bottom:
Oppermann), \becomes Oppermann),''

\newbugonpage 355, line 15:
{\sl pu-ter\/} \becomes {\sl put-er}

\bugonpage 357, after line 2:
Ben Ross Schneider Jr., ``Programs as essays,'' {\sl Datamation\/ \bf30},7
(May 15, 1984), 162--168.

\bugonpage 362, left column:
Gries, David Joseph, 149, 350.

\newbugonpage 362, Hoare entry:
82, 83--84 \becomes 82--84

\newbugonpage 363, right column:
Lavagnino, John David, 338.\hfill\break
Leeuwen, Marcus Aurelius Augustinus van, 293, 338--339.\hfill\break
Levy, Silvio Vieira Ferreira, xii, 337, 341, 355.\hfill\break
{\ninerm LISP}, 55, 101, 356.

\bugonpage 363, entry for linking:
two way \becomes two-way

\newbugonpage 365, left column:
Perlis, Alan Jay, 1, 14, 24.

\bugonpage 366, left column:
Schneider, Ben Ross, Jr., 357.

\bugonpage 367, left column:
Sullivan, Wayne Garrett, 293, 337--339.

\bugonpage 367, left column:
Thimbleby, Harold~William, 133, 136, 355, 357.

\bugonpage 368, left column, Winkler entry:
v \becomes vii

\bye
