我试图弄清楚在goops库(http://wiki.call-cc.org/eggref/4/coops(中定义泛型的目的是什么,如果它可以帮助某人,它类似于CLOS(我也不知道CLOS(。
我可以这样定义一个类和一个方法:
(define-class <complex> () (x y))
(define-method (sum (a <complex>) (b <complex>))
(make <complex>
'x (+ (slot-value a 'x) (slot-value b 'x))
'y (+ (slot-value a 'y) (slot-value b 'y))))
但是这样做的目的是什么呢?
(define-generic (sum <complex> <complex>))
从文档中:
[syntax] (define-generic (NAME ARGUMENT ...))
定义泛型过程,即专用于一个或多个过程的过程 参数类型。论点。。。定义专用数量 此通用过程应用于调度到正确 方法。泛型过程可能会收到其他参数,但 这些不会用于确定方法。
有人可以给我一个简单的例子来解释define-method
和define-generic
的差异吗?
泛型过程是一种特殊的对象,由(一个或多个(专用方法组成。
define-generic
定义这样一个对象,define-method
向其添加方法,如果它不存在,则创建它。