小编J S*_*J S的帖子

在Common Lisp中,如何定义通用数据类型说明符(如整数列表)?

我想定义一个类型说明符来描述相同类型的事物列表.所以我想有(list-of integer)类似的(array integer)(内置).我能够为特定类型创建它,如下所示:

(defun elements-are-integer (seq) 
  (every #'(lambda (x) (typep x 'integer)) seq))
(deftype list-of-integer ()
  '(and list (satisfies elements-are-integer)))
Run Code Online (Sandbox Code Playgroud)

但是,这意味着我必须为每种可能的类型执行此操作.如何更改此代码,以便类型将另一种类型作为参数,并动态构造satisfies谓词?问题是satisfies需要一个全局符号,我不知道如何在适当的上下文中定义谓词函数(我想我需要gensym它以某种方式,但如何?).此外,解决方案应该工作,以便可以在另一个包内创建类型.

common-lisp

9
推荐指数
1
解决办法
2423
查看次数

标签 统计

common-lisp ×1