172 
,setter)))) 
,setter)))) 
173 


174 


175 
(defmacro dovector ((elt vector) &rest forms) 
(defmacro dovector ((elt vector &optional default) &rest forms) 
176 
"Just like dolist, but with onedimensional arrays." 
"Just like dolist, but with onedimensional arrays." 
177 
(let ((index (gensym)) 
(let ((index (gensym)) 
178 
(length (gensym)) 
(length (gensym)) 
180 
`(let ((,vec ,vector)) 
`(let ((,vec ,vector)) 
181 
(do ((,index 0 (1+ ,index)) 
(do ((,index 0 (1+ ,index)) 
182 
(,length (length ,vec))) 
(,length (length ,vec))) 
183 
((>= ,index ,length) nil) 
((>= ,index ,length) ,default) 
184 
(let ((,elt (aref ,vec ,index))) 
(let ((,elt (aref ,vec ,index))) 
185 
,@forms))))) 
,@forms))))) 
186 

