Errata 239-5 Seibel (corrected in the 2nd printing)

Page

Original Sentence

Corrected Sentence

 2

For most languages, however, they payoff isnÕt so easily categorized; it has to do with subjective criteria such as how it feels to use the language.

 

For most languages, however, the payoff isnÕt so easily categorized; it has to do with subjective criteria such as how it feels to use the language.

 

4

If youÕre coming from C++ and Java (or from statically typed functional languages such as Haskel and ML) and refuse to consider living without static type checks, you might as well put this book down now.

 

If youÕre coming from C++ and Java (or from statically typed functional languages such as Haskell and ML) and refuse to consider living without static type checks, you might as well put this book down now.

 

11

Since the Lisp in a Box packaging is designed to get new Lispers up and running in a first-rate Lisp development environment with minimum hassle, all you need to do to get it running is to grab the appropriate package for your operating system and the preferred Lisp from the Lisp in

a Box Web site listed in Chapter 32 and then follow the installation instructions.

 

Since the Lisp in a Box packaging is designed to get new Lispers up and running in a first-rate Lisp development environment with minimum hassle, all you need to do to get it running is to grab the appropriate package for your operating system and the preferred Lisp from the Lisp in

a Box Web site listed in Chapter 32 and then follow the installation instructions.

 

26

CL-USER> (save-db "~/my-cds.db")

CL-USER> (save-db "/home/peter/my-cds.db")

36

If you pass MACROEXPAND-1, a form representing a macro call, it will call the macro code with appropriate arguments and return the expansion.

If you pass MACROEXPAND-1 a form representing a macro call, it will call the macro code with appropriate arguments and return the expansion.

41

10. One other rarely used kind of Lisp form is a list whose first element is a lambda form. IÕll discuss this kind of form in Chapter 5.

10. One other rarely used kind of Lisp form is a list whose first element is a lambda expression. IÕll discuss this kind of form in Chapter 5.

83

Control constructs are the other main kind of looping constructs. Common LispÕs looping facilities are—in addition to being quite powerful and flexible—an interesting lesson in the have-your-cake-and-eat-it-too style of programming that macros provide.

 

Looping constructs are the other main kind of control constructs. Common LispÕs looping facilities are—in addition to being quite powerful and flexible—an interesting lesson in the have-your-cake-and-eat-it-too style of programming that macros provide.

 

87

(format t "Waiting ...~%")

(sleep 1))

(format t "Waiting~%")

(sleep 60))

93

But if you look at the expansion, the list as a whole doesnÕt appear in the expansion; the three element are split up and put in different places.

But if you look at the expansion, the list as a whole doesnÕt appear in the expansion; the three elements are split up and put in different places.

 

122

 

The read syntax for characters objects is simple: #\ followed by the desired character. Thus, #\x is the character x.

 

The read syntax for characters is simple: #\ followed by the desired character. Thus, #\x is the character x.

186

(error "list-directory not implemented"))

(error "file-exists-p not implemented"))

187

 

The :test argument, if provided, specifies another function thatÕs invoked on each pathname before the main function is; the main function will be called only if the test

function returns true.

The :test argument, if provided, specifies another function thatÕs invoked oneach pathname before the main function is; the main function will be called only if the test

function returns true. The default value for the :test argument is a function that always returns true, created by calling the standard function CONSTANTLY.

 

320

 

8. Unfortunately, the language itself doesnÕt falways provide a good model in this respect:

Unfortunately, the language itself doesnÕt always provide a good model in this respect:

322

This way, at the end of the LET, after CALL-NEXT-METHOD returns, the old value of *in-progress-objects* will be restored, effectively popping the object of the stack.

 

This way, at the end of the LET, after CALL-NEXT-METHOD returns, the old value of *in-progress-objects* will be restored, effectively popping the object of the stack.

 

340

 

Putting all these variations together, the ID3 format uses four ways to read and write strings—two characters crossed with two ways of delimiting the string data.

 

Putting all these variations together, the ID3 format uses four ways to read and write strings—two characters crossed with two ways of delimiting the string data.

 

344

(with-open-file (in file)

 

(with-open-file (in file :element-type '(unsigned-byte 8))

 

356

To make matters worse, the number of bytes used to encode description is dependent on the encoding.

To make matters worse, the number of

bytes used to encode text is dependent on the encoding.

356

(defun encoded-string-length (string encoding terminated)

(let ((characters (+ (length string) (if terminated 1 0))))

(* characters (ecase encoding (0 1) (1 2)))))

 

(defun encoded-string-length (string encoding terminated)

(defun encoded-string-length (string encoding terminated)

(let ((characters (+ (length string)

(if terminated 1 0)

(ecase (encoding (0 0) (1 1))))))

(* characters (ecase encoding (0 1) (1 2)))))

361

"Psychedelic" "Rave" "Showtunes" "Trailer" "Lo-Fi" "Tribal"

 

"Psychadelic" "Rave" "Showtunes" "Trailer" "Lo-Fi" "Tribal"

 

361

 

"Slow Rock" "Big Band" "Chorus" "Easy Listening" "Acoustic" "Humor"

 

 

"Slow Rock" "Big Band" "Chorus" "Easy Listening" "Acoustic" "Humour"

 

375

(:input ::type "reset" :value "Reset"))))))))))

 

(:input :type "reset" :value "Reset"))))))))))

 

389

2. As always, the first causality of concise exposition in programming books is proper error handling; in production code youÕd probably want to define your own error type, such as the following, and signal it instead:

 

2. As always, the first casualty of concise exposition in programming books is proper error handling; in production code youÕd probably want to define your own error type, such as the following, and signal it instead:

 

418

The call to update-current-if-necessary will take care of setting current-song to NIL.

The call to update-current-if-necessary will take care of setting current-song to emptyplaylist- song.

 

 

432

 

Obviously, if you generate HTML by just printing strings to a stream, then itÕs up to you to replace any occurrences of

those characters in the string with the appropriate escape sequences, &lt, &gt and &.

 

Obviously, if you generate HTML by just printing strings to a stream, then itÕs up to you to replace any occurrences of

those characters in the string with the appropriate escape sequences, < > and &.

 

432

 

2. Well, almost every tag. Certain tags such as IMG and BR donÕt. YouÕll deal with those in the section ŌThe Basic Evaluation Rule.Ķ

 

 

2. Well, almost every tag. Certain tags such as IMG and BR arenÕt. YouÕll deal with those in the section ŌThe Basic Evaluation Rule.Ķ