Common Lisp:如何检查某些东西是否是类型说明符?

Dra*_*gon 5 types predicate common-lisp

我一直无法找到任何内置的方法来检查某些东西是否是有效的类型说明符.

这样的谓词是否存在?

(我会自己制作一个,但是唉,传递不是类型说明符的东西的结果typep是未定义的.并且check-type根据超级规范没有特殊情况.)

cor*_*ump 3

您可以使用 Tomohiro Matsuyama 的trivial-types系统 (LLGPL),该系统除其他外还定义了一些特定于实现的谓词的包装器:

(defun type-specifier-p (type-specifier)
  "Returns true if TYPE-SPECIFIER is a valid type specfiier."
  (or (documentation type-specifier 'type)
      #+sbcl (sb-ext:valid-type-specifier-p type-specifier)
      #+openmcl (ccl:type-specifier-p type-specifier)
      #+ecl (c::valid-type-specifier type-specifier)))
Run Code Online (Sandbox Code Playgroud)