From: Kevin R. <ke...@ro...> - 2003-04-30 12:29:32
|
I've come across an interesting warning while compiling Edi Weitz's fine cl-ppcre package. I've distilled it down to this test case: (defun s (h) (declare (optimize (space 0))) (loop for i in (sort h #'<) collect i)) With the (space 0) optimization, I get the following warning during compilation: ; A possible binding of #:LOOP-LIST-0 is a VECTOR, not a LIST. But without that optimzation, compilation concludes without warning. Of course, sort can return non-list sequences. Should the compiler warn about that? Should the occurance of warnings depend on the optimization settings? Thanks for considering this. -- Kevin Rosenberg ke...@ro... |
From: Alexey D. <ade...@co...> - 2003-04-30 16:48:28
|
Kevin Rosenberg <ke...@ro...> writes: > I've come across an interesting warning while compiling Edi Weitz's > fine cl-ppcre package. > > I've distilled it down to this test case: > > (defun s (h) > (declare (optimize (space 0))) > (loop for i in (sort h #'<) collect i)) You can (DECLARE (NOTINLINE SORT)). > With the (space 0) optimization, I get the following warning during > compilation: > > ; A possible binding of #:LOOP-LIST-0 is a VECTOR, not a LIST. * (defun s (h) (loop for i in (etypecase h (list h) (vector h)) collect i)) ; in: LAMBDA NIL ; (ETYPECASE H (LIST H) (VECTOR H)) ; --> LET COND IF COND IF PROGN ; ==> ; H ; ; caught WARNING: ; A possible binding of #:LOOP-LIST-2 is a VECTOR, not a LIST. ; ; caught WARNING: ; A possible binding of #:LOOP-LIST-2 is a VECTOR, not a LIST. ; compilation unit finished ; caught 2 WARNING conditions Do you want the compiler to issue such warnings? (See also the definition of SORT.) -- Regards, Alexey Dejneka "Alas, the spheres of truth are less transparent than those of illusion." -- L.E.J. Brouwer |