[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]