From: Paul F. D. <di...@dl...> - 2003-07-27 10:54:02
|
I wrote: > I noticed that the compiler is not infering the type returned by > MAKE-SEQUENCE as well as it could: The same thing happens with CONCATENATE: * (let ((x (concatenate 'vector '(a a a a a a a a a a)))) (setf (aref x 4) 'b) x) ; in: LAMBDA NIL ; (SETF (AREF X 4) 'B) ; --> SB-KERNEL:%ASET LET* ; ==> ; (SB-KERNEL:HAIRY-DATA-VECTOR-SET ARRAY SB-INT:INDEX SB-C::NEW-VALUE) ; ; note: unable to ; avoid runtime dispatch on array element type ; because: ; Upgraded element type of array is not known at compile time. ; compilation unit finished ; printed 1 note #(A A A A B A A A A A) * (let ((x (the (vector t) (concatenate 'vector '(a a a a a a a a a a))))) (setf (aref x 4) 'b) x) #(A A A A B A A A A A) * Paul |