From: Nikodemus S. <nik...@ra...> - 2012-04-18 13:49:32
|
On 18 April 2012 15:13, Nikodemus Siivola <nik...@ra...> wrote: > Thank you! Logged as https://bugs.launchpad.net/sbcl/+bug/984813 Actually, I'm having second thoughts. Consider: (defvar *foo* (list 1 2)) (defun bar () (car *foo*)) (defstruct (foo (:constructor make-foo (*foo* &aux (bar (bar))))) *foo* bar) (let ((foo (make-foo (list 'a 'b)))) (list (foo-*foo* foo) (foo-bar foo))) ; => ((A B) A) It is not clear to me that this is wrong, and that ((A B) 1) would be right. Renaming user-specified arguments strikes me as suspect: the spec talks about implementation not being allowed to do X, but this is the user explicitly specifying something. Granted, /not/ considering this a bug means that you cannot use a boa-constructor if you name a slot with a symbol also used as a defconstant or defglobal. Hm. Cheers, -- Nikodemus |