我正在使用Common Lisp,我有多个函数使用相同类型的数据,我使用declare
来指定符号类型:
(defun foo (x)
(declare (type single-float x))
...)
(defun bar (x y)
(declare (type single-float x y))
...)
现在我想将single-float
存储到自定义符号changable-float
中,以便我可以轻松更改这些功能的所有类型(例如,从single-float
到double-float
)。我试过这些代码,但它不起作用:
(defvar changeable-float 'single-float)
(defun foo (x)
(declare (type changeable-float x))
...)
(defun bar (x y)
(declare (type changeable-float x y))
...)
我该如何实现这个想法?
答案 0 :(得分:5)
使用DEFTYPE
定义类型。
CL-USER 41 > (deftype foo () 'integer)
FOO
CL-USER 42 > (typep 3 'foo)
T
CL-USER 43 > (typep "33" 'foo)
NIL