我想将Common Lisp CLOS对象用作哈希表中的键。我认为这很简单:
(defclass my-class () ((a :accessor a :initarg a)))
(defun my-class= (my-instance-1 my-instance-2)
(equal (a my-instance-1) (a my-instance-2)))
(defparameter my-hash-table (make-hash-table :test #'my-class=))
查看Common Lisp Hyperspec,我发现只能使用eq、eql、equal或equalp测试相等性。
是否有其他方法可以做到这一点?还是这只是一种非常愚蠢的事情,因此标准不允许它?