(defun type= (l) (if (cdr l) (if (eq (type-of (car l)) (type= (cdr l))) (type-of (car l)) nil) (type-of (car l)))) (deftype list-of (type) `(and (cons ,type *) (satisfies type=))) (typep '(a b c d) '(list-of symbol)) T (typep '(a b 1 d) '(list-of symbol)) NIL