(let ((v1 (make-array 1 :element-type 'bit :initial-contents '(1) :fill-pointer 0)) (v2 (make-array 1 :element-type 'bit :initial-contents '(1) :fill-pointer 1)) (r (make-array nil))) (funcall (compile nil `(lambda (r p2) (declare (optimize speed (safety 1)) (type (simple-array t nil) r) (type (array *) p2)) (setf (aref r) (bit-and ,v1 (the (bit-vector *) p2))) (values))) r v2) (let ((result (aref r))) (values (notnot (simple-bit-vector-p result)) (=t (array-dimension result 0) 1) (=t (aref result 0) 1))))