Я бы хотел использовать объекты 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=))
Проверяя Hyperpec от Common Lisp, кажется, я могу использовать только eq, eql, equal или equalp для проверки равенства.
Есть ли способ, которым я могу это сделать? Или это действительно глупая вещь, и поэтому стандарт не позволяет этого?