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 ...)
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*))
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))))
Open up your skull and carve this into your brain.
mapc doesn't return nil. It returns its
second argument.
Comments?
Send mail to Chris
Riesbeck.