[cldoc-devel] use of format and intern in function generating macros

Taylor, Joshua tayloj at rpi.edu
Wed Jul 12 21:19:30 UTC 2006

Hello CLDOC list,

I've just recently checked out a copy CLDOC, and am quite pleased with the
results I'm getting. At first, however, I was running into a slight
bug, but one which
is easy to fix.

In several places in the code:

cludg.lisp:186:	   (defun ,(intern (format nil "~a" s-purger)) (string)
cludg.lisp:191:	   (defun ,(intern (format nil "~a" ll-purger)) (lambda-list)
cludg.lisp:618:  (with-standard-io-syntax (intern (format nil "~a~a"
s1 s2) pkg)))

intern is being called with a string coming from format. In most Lisps
this is not
a problem, and in the one I use (Lispworks) the default settings would have no
problem either. Out of personal preference however, I set *print-case* to
:capitalize, which means that, e.g.,  (format nil "~a" s-purger) would give me
"Purge-String-For-Html" and that the function defined was actually

Fortunately the fix is easy: just change instances of (format nil "~a" sym) tp
(symbol-name s-sym), and
cludg.lisp:618:  (with-standard-io-syntax (intern (format nil "~a~a"
s1 s2) pkg)))
cludg.lisp:618:  (with-standard-io-syntax (intern (concatenate 'string
(symbol-name s1) (symbol-name s2)) pkg)))
although I'm not sure if it's necessary in that second case (as I
don't know the context
of that code).

Once I got those purgers working, the HTML documentation is really beautiful.
I'm very impressed with the project. Thanks for all your hard work!
Joshua Taylor
tayloj at rpi.edu

More information about the cldoc-devel mailing list