(deftype sequence* (element-type) (let ((name (intern (format NIL "~a-SEQ-P" element-type)))) (compile name `(lambda (seq) (etypecase seq (list (loop for el in seq always (typep el ',element-type))) (vector (loop for el across seq always (typep el ',element-type)))))) `(and sequence (satisfies ,name))))