Page 260
as, with
These are pretty poor names in that they don't convey what they're about. I prefer
(in-html tag string)
and
(with-html tag expression ...)
Page 261
html-file
Graham's definition assumes lowercase 4-character file extensions with the period separator. This works for Mac's and Unix boxes and Windows 95, but not for Windows 3.1 and perhaps not for other systems.
Use make-pathname
to create file names and put
extensions in user-modifiable parameters, e.g.,
(defparameter *html-extension* "html" "The standard extension for HTML files.") (defun html-file (base) (make-pathname :name base :type *html-extension*))
Page 263
map3
Graham's definition counts on tail-call elimination to avoid overflowing the stack on long lists. You can't assume this will happen in Common Lisp.
A more typical Common Lisp definition would be:
(defun map3 (fn lst) (do ((l lst (cdr l)) (prev nil (car l))) ((null l) nil) (funcall fn (car l) prev (cadr l))))
"It takes a lot of rewriting to make a program simple."
Open up your skull and carve this into your brain.
mapc
mapc
doesn't return nil
. It returns its
second argument.