我希望能够使用已定义的类型作为defmethod
的参数专用程序。动机是可读性和灵活性,以在稍后阶段改变。 Somehting like:在defmethod中使用Common Lisp用户定义类型
(deftype foo() 'fixnum)
(defmethod bar ((x foo)) ...)
(defmethod baz ((x foo)) ...)
但是,这是行不通的。 CLtL2说“表单deftype不会创建任何类。”
所以我必须写:
(defmethod bar ((x fixnum)) ...)
(defmethod baz ((x fixnum)) ...)
另一种方法是定义一个名为foo
类无非是围绕fixnum
的一个封装,但不会说是这么简单的东西不可接受的开销作为fixnum
?
有没有更好的方法?
CLtL2已过时。请使用基于ANSI Common Lisp标准的Common Lisp HyperSpec [CLHS](http://www.lispworks.com/documentation/HyperSpec/Front/Contents.htm)。 –
CLHS表示'defmethod'的'paramet-specializer-names':如果parameter-specializer-name是一个符号,它命名为class_ – user3414663
实际上CLHS也表示_运算符deftype不会创建任何类._ – user3414663