RE: Bit array should be local - acting global
> -----Ursprüngliche Nachricht----- > Von: owner-lisp-hug@lispworks.com > [mailto:owner-lisp-hug@lispworks.com] Im Auftrag von Mitch Berkson > Gesendet: Montag, 10. September 2007 18:40 > An: lisp-hug@lispworks.com > Betreff: Bit array should be local - acting global > > > > After it is compiled and the first time the function below is > called, it correctly prints #*00000000 as the value of the > local b-array. When it is run again, it incorrectly returns > #*00010000. There seems to be a problem with a bit array > inside a let not being local. > > (defun bit-array-test () > (let ((b-array #8*0)) > (format t "b-array = ~A~%" b-array) > (setf (sbit b-array 3) 1))) > > > Mitch > Hi Mitch, even if not compiled it behaves this way. I think it is the same as (defun list-test () (let ((list '(1 2 3))) (format t "list = ~A~%" list) (setf (car list) 9))) which produces a similar behaviour. I don't remember the exact terms of the explanation, but basically you invisibly modify your source with programs like this. Andreas