[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Typographical corrections to Common Lisp book



The following is the text, verbatim, of the other handout I made
available this past Monday at the Common Lisp meeting.

----------------------------------------------------------------------
Corrections to first printing of  Common Lisp: The Language
Thanks to the many people who noticed these problems, and
especially to Dr. Masayuki Ida, who found over fifty of them.
				-- Guy Steele, December 1985


6  line 4 from bottom:  Definition 1-1 => Table 1-1

7  line 2 from bottom:  Definition 1-2 => Table 1-2

8  line 3   Definition 1-3 => Table 1-3

8  line 7   Definition 1-4 => Table 1-4

8  line 9 from bottom:  Definition 1-5 => Table 1-5

9  line 17  A\( B => A\(B  (blank should be deleted)

9  Under \, "a symbol whose name is consists of the" =>
"a symbol whose name consists of the".

10  First two paragraphs should have monospace comma and colon,
respectively, at the left margin.

18  3.1010299957f-1 should be 3.010299957f-1 (first "1" should be deleted).

20 line 1   "#,"  (bad printing)

35 line 12  "where x is subtype of common" => "where x is a subtype of common"

43  Table 43-1 should include the names "signed-byte" and "unsigned-byte".

44  Delete both compatibility notes.

67  "The defun special form" => "The defun macro"

67  The comment in (defun discriminant ...) is wrong, because the code
works for complex coefficients.  Change the line
	The quadratic equation a*x^2+b*x+c=0 has real, multiple
to be the two lines
	If the coefficients a, b, and c are all real numbers, then
	the quadratic equation a*x^2+b*x+c=0 has real, multiple

69  Top line, last word but one, should be "replace", not "replaces".

69 Clarify that EVAL-WHEN returns the value of the last form in its body.

73 In the compatibility note, observe that Common Lisp ATOM corresponds
to Interlisp NLISTP.

75 line 5 from bottom:  vectorp => simple-vector-p

80 Delete the first compatibility note.

87 Rewrite the second sentence in the description of FUNCTION as
follows:  "In particular, if fn is a symbol, then the functional
definition of that name is returned, which is that established by the
innermost lexically enclosing FLET, LABELS, or MACROLET construct, if
there is one, or else the global functional definition of the symbol
(see SYMBOL-FUNCTION)."

92 line 13  setf => psetf

94 line 11 from bottom:  "newvalue2)" => "newvalue2"

99 line 8    place => place1

99  In first line of second paragraph, delete the italicized word "newvalue".

108 In the compatibility note, observe that Interlisp APPLY*, unlike
Common Lisp FUNCALL, can be used to apply special forms.

118 In the compatibility note, observe that Interlisp SELECTQ has
a syntax different from that of Common Lisp CASE in having a separate
trailing "else" form.

122 line 2 from bottom:  "init" should be italic

122 line 1 from bottom:  "var" should be italic

125 Line 9: Delete first sentence and replace with: "As an example of
nested loops, consider a data structure that is a list of conses."
(Remove spurious reference to "env".)

128 Delete compatibility note.

132 line 15 from bottom: "Mismatch-gleep!S" => "Mismatch-gleep!~S"

132 line 2 from bottom:  (same as P132 B15L)

145  Three lines from the bottom, the term "&environment" should
appear at the left in monospace.

147  Last line on this page should be deleted; it duplicates first line
on page 148.

154 Add to the table of forms allowing declarations in their bodies
WITH-OPEN-STREAM, WITH-OPEN-FILE, WITH-OUTPUT-TO-STRING, and
WITH-INPUT-FROM-STRING.

157  In third line, "declaration-form" should be "decl-spec" (in italics).

159  After the line "... entirely equivalent to" the next line should read
(ftype (function arglist (values result-type-1 result-type-2 ...)) name)

189 In the code comments, "just a few thing" => "just a few things".

190 In LEAD-TO-GOLD, "(phlogiston:heat-flow x)" =>
"(phlogiston:heat-flow 1/137 x x)".

191 Before HEAT-FLOW definition, insert "(DEFVAR *FEELING-WEAK* NIL)"
and rename FEELING-WEAK => *FEELING-WEAK*.  (Actually, maybe we can come
up with a more realistic example of two modules for the next edition.)

200  At the end of the first paragraph "returns the result." add the sentence
"It is an error if any argument other than the first is zero."
After "With one argument, / reciprocates the result" add the sentence
"The argument must not be zero."

204  Halfway down, the last line of a paragraph "#C(0.5 1.73205)."
should say "#C(1.0 1.73205)."

205 line 7 from bottom:  "x" should be italic

206 line 5   "number" should be italic

206 line 7   "x" should be italic

209 Delete the last two sentences of the compatibility note, as the
information about Interlisp is not (or is no longer) correct.

214 line 1 from bottom:  "x" should be italic

215 line 2   "x" should be italic

216  Alter "The divisor may be any non-complex number." to read
"The divisor may be any non-zero non-complex number."

216  Change "For example, (floor 5 2) @EQ (floor (/ 5 2)) ..." to
"For example, (values (floor 5 2)) @EQ (values (floor (/ 5 2))) ...".
[Actually, it would be better to rewrite this whole section, but this
fix at least makes it accurate.]

216  Before last paragraph, insert this new paragraph:
Note that while (floor 5 2) and (floor (/ 5 2)) return the same first
value, they return different remainders as the second value:
	(floor 5 2) => 2 1
	(floor (/ 5 2)) => 2 1/2
This is why @f[values] was used above in the remark that
(values (floor 5 2)) @EQ (values (floor (/ 5 2))).

222 Occurrences of "logiorc1" and "logiorc2" should be "logorc1" and
"logorc2".

226  In definition of haipart, the occurrence of "n" should be "count".

227 line 8 from bottom:  "dpb" => "deposit-field"

230  In second line of description of make-random-state, the
occurrence of random-state should be make-random-state.

246 line 13  "item" and "seq" should be italic, and "seq" => "sequence"

265 line 12  "'a b c" => "'a 'b 'c"

276  Halfway down, in the display line before "See pushnew.", the phrase
"(fn item)" should be "(funcall fn item)", with "funcall" in monospace
and "fn" and "item" in italics as before.

283 In the last sentence of the compatibility note, replace the last
clause with "and in Common Lisp the cases of NIl as a value and no
entry in the hash table can be distinguished."

284  "means the approximately the same as" => "means approximately the
same as"

287  In the last line, :type should be :element-type.

295  In example use of bit-andc1, result should be #*0010, not #*0100.

297 Clarify that if an array with a fill pointer is adjusted and no new
:FILL-ARRAY specification is given, or one is given with the value T,
then the fill pointer retains its old value.  It is an error to adjust
the array to be smaller than the (old or explicit new) fill pointer.
If one specifies :FILL-POINTER NIL explicitly to ADJUST-ARRAY, then it
is an error if the array to be adjusted does have a fill pointer.

301 Change the compatibility note to "string= is similar to the
Interlisp function strequal."

307  In the header line for "defstruct", "{slot-description}+" should
be "{slot-description}*" (star instead of plus).

309  First paragraph should end "see section 19.6)." not "see section 19.6.";
there is a missing parenthesis.

315  Under ":type list", ":unnamed" => "not :named".

323 line 19  "applications." => "applications,"

324  In the second and third lines, replace "2" with "3".

325  The name of the variable "-" does not appear in the header line.

344 In the compatibility note, delete the reference to the Interlisp
RADIX function, and move it to page 372 as a comment on the
*print-radix* variable.

348 line 1   horizontal line should be moved to before compatibility note.

347-348  The page layout is a bit confused here; some connection should
be made between the description of ";" and the example.

349  Before the first complete paragraph, there should be a heading
line consisting of a single monospace backquote (accent grave).

349  In the first example of the use of backquote, the character
just before " (print ,x)" is a "t".  (It is badly printed in several
copies.)

357  All occurrences of "constructor macro" should read "constructor function".

365  "The user is encouraged to" => "The user may, for some applications,
wish to".

373  Third and sixth lines from bottom: "print-array" in monospace should
be "*print-array*".

394  "~Scale factor" => "~%Scale factor"

394 "(- k 5) 3.14159))" => "(- k 5) (- k 5) 3.14159))"

396  Fourth line: "x x x))" => "x x x x))"

396  Line 12: "314.2$+10" => "314.0$+10" and "3.14L+12" => "3.14E+12"

412 line 20  version. => version).

422 Observe that if :IF-EXISTS NIL or :IF-DOES-NOT-EXIST NIL is used
with WITH-OPEN-FILE then the variable may be bound to NIL, and the
body should test for this case before attempting to use the stream.

430  The sixth line on the page should be "(funcall fn)", not "(funcall fn))".

432 "*break-on-warnings" should be "*break-on-warnings*" (in the heading
for that item).

437 The first argument to CCASE should be called "keyplace", not "keyform".

440 line 3   [function] in the right margin.

449  Replace reference 9 with a reference to the following:
IEEE Standard for Binary Floating-Point Arithmetic
ANSI/IEEE Std 754-1985 (approved July 26, 1985)
IEEE, 345 E 47 St. NY, NY 10017  (stock number SH10116 price $6.50)

452 right column, line 27 from bottom: (entry for characters,
macros) 246-351 => 346-351

454  In index entry for "defun", first page number should be 67, not 57.

458  Entry for function "keyword" should be for "keywordp".

458  First reference for "macrolet" should be 113-114, not 93-94.

459  Add index entry "newline 20, 21-22, 235, 243, 336, 347, 378, 383, 384,
397".

459 left column, line 19 from bottom: "parsing" => "passing"

459 left column, line 9 from bottom: 1325 => 135

461 right column, column, line 18 from bottom:  replacd => rplacd

462 First reference to "shadow function" should be 186-187, not 182-183.

463 left column, line 26 from bottom:   382;420 => 332;420

463 left column, line 21 from bottom:   comparison 300-306 => 300-302

464 "unread char function" => "unread-char function"

465 right column, line 11   ~: => ~|

465 right column, line 12   :~ => ~;

465 right column, line 20 from bottom:  >E => ~E

465 right column, line 19 from bottom:  >F => ~F

[END]