我找到了通用 lisp 的所有类型说明符。还有就是list里面。但是list在 Common Lisp 中没有象数组那样声明的例子,(declare (array fixnum 10)).
那么,声明列表类型说明符的正确方法是什么?谢谢
该LIST类型说明符不具有一个内置的方式来指定类型列表中的元素。它只是(OR CONS NULL).
您可以使用DEFTYPE定义一个类型说明符,该说明符指定使用的元素类型SATISFIES,如Common Lisp Cookbook的类型系统页面所示。
(defun list-of-strings-p (list)
"Return t if LIST is non nil and contains only strings."
(and (consp list)
(every #'stringp list)))
(deftype list-of-strings ()
`(and list (satisfies list-of-strings-p)))
Run Code Online (Sandbox Code Playgroud)