比方说,我定义一个新类foo
:Lisp的自定义比较函数
(defclass foo()
((bar :initarg :bar ...)
(baz :initarg :baz ...)
...))
我想创建一个自定义的比较为foo
,如:
(defun foo-equalp (foo1 foo2)
(equalp (bar foo1)))
会不会有更好的,更明确的方式来把这些foo-equalp
功能将foo
类?
我想不必通过#'foo-equalp
为:test
参数的功能,如REMOVE-DUPLICATES
的,但即使这是不可能的,我还是想知道是否有定义该功能的更地道Lisp的方式。
听起来好像你想要一个相等谓词,它是一个可以添加专门方法的通用函数(有点像你可以在Java中专注于'.equals()')。不幸的是,没有一个“常见”谓词('eq','eql','equal','equalp')是泛型函数,所以尽管编写这样的泛型函数并不难,但仍然必须通过它去像'remove'等库函数,因为它不会是这些库函数的默认比较。 –
@JoshuaTaylor:你知道http://cdr.eurolisp.org/document/8/cleqcmp.html吗?我已经完成了CDR8的实现,但尚未发布(需要清理并提交它)。 –
@PaulNathan我意识到CDR存储库,但是我以前没有读过那个。这看起来不错。我肯定会赞成使用它的答案。 :)我意识到你说过你还没有发布它,但它可以在任何地方在任何状态下在线吗? –