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

时间:2018-04-09 02:35:59

标签: types common-lisp predicate

我无法找到任何检查某些内容是否为有效类型说明符的内置方法。

这样的谓词是否存在?

(我会自己制作一个,但是唉,将不是类型说明符的内容传递给typep的后果是未定义的。check-type根据超级规范没有异常情况。)

2 个答案:

答案 0 :(得分: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)))

答案 1 :(得分:3)

要将existing answer扩展为支持CLISP,请使用

name = ['Elon Reeve Musk']
full_name = [word[0].lower() for word in name[0].split(' ')]
firts_letters = "".join(full_name)
username = '%s@company.com' %(firts_letters)

请参阅Type Specifiers