On Wed, Oct 23, 2002 at 07:55:04AM -0500, William Harold Newman wrote:
> I've made a brute-force patch for this, below, which I'm inclined to
> add before 0.7.9, maybe tomorrow. If anyone wants to check to see
> whether I've made any new conceptual errors, it'd probably be a good
It looks reasonable to me (untested); something like this will also
"fix" bug 185, I think.
[ Slight digression:
It won't actually fix bug 185, because EVAL of forms beginning with
LOCALLY transforms them into (%EVAL '(LAMBDA () ... (LOCALLY ...))), and
that has lost the toplevelness of the stuff inside the LOCALLY which
we're meant to preserve.
However, absent bugs in DEFFOO and friends (like this one) I can't
actually construct a case where this matters; except of course that this
means that with Bill's proposed patch structures defined with e.g.
(locally (declare (optimize speed)) (defstruct foo a b))
will be significantly slower than those with just the simple defstruct.
Am I missing some case where it would make a difference? Hmm, I think
I've found one:
(locally (defmacro foo (x) `(print ,x)) (foo 1))
which should print 1 (and does when file-compiled) but doesn't from the
> If performance matters in this case, there is probably some cute way
> to use *FORWARD-REFERENCED-LAYOUTS* tricks to make it better, but I
> thought the mindlessly straightforward code below was more appropriate
> for a last-minute patch.
I'd rather have 0.7.9 with this patch than without it, but something
better post 0.7.9 would always be good :)
http://www-jcsu.jesus.cam.ac.uk/~csr21/ +44 1223 510 299/+44 7729 383 757
(set-pprint-dispatch 'number (lambda (s o) (declare (special b)) (format s b)))
(defvar b "~&Just another Lisp hacker~%") (pprint #36rJesusCollegeCambridge)