Page 60
I leave as an exercise for the reader to come up with a clearer set of definitions for Figure 4.1.
Page 65
The function second-word
should have more checks in
it. Never assume that position
will return a number. It
might return nil
.
Page 70
Warning to Macintosh Common Lisp users: Do not define a
structure called point
in the CL-USER
package. MCL already uses point
for its graphical interface
code.
Page 72
This binary tree code is very inefficient. Inserting a new element, for example, copies the nodes above the point where the element is inserted. Exactly how much gets copied is left as an exercise for the reader, but such exercises should not be left for maintainers. A more traditional version that modifies the branches of the tree destructively -- but cleanly -- is in order. Some of this is done in Chapter 12, but not very cleanly.
There is also a serious bug
in the
bst-remove
given in the book. The code
in bst.lisp is Graham's fixed version.
Finally, the simple algorithm for insertion used here does the worst thing possible when passed a sorted list of elements [which is what?], which could happen quite easily. For real binary search trees, you should implement a balancing binary search tree, such as red-black or AVL.