>>23
なるほど。力になれずに申し訳ないけど、ポータブルなやり方は分からない。
subtypepのエラーを捕捉するのが、泥臭いけど一番良いのかな。
>>22で挙げたccl:type-specifier-pでは、

(defun type-specifier-p (form &aux sym)
(cond ((symbolp form)
(or (type-predicate form)
(structure-class-p form)
(%deftype-expander form)
(find-class form nil)))
((consp form)
(setq sym (%car form))
(or (type-specifier-p sym)
(memq sym '(member satisfies mod))
(and (memq sym '(and or not))
(dolist (spec (%cdr form) t)
(unless (type-specifier-p spec) (return nil))))))
(t (typep form 'class))))

こんな風に判断してた。