Использование объектов CLOS Common Lisp в качестве ключей в хеш-таблице?

I 'Я хотел бы использовать объекты CLOS Common Lisp в качестве ключей в хэш-таблице. Я думал, что это будет так просто:

(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 to проверить равенство.

Есть ли способ сделать это? Или это просто глупая вещь, и поэтому стандарт не позволяет этого?

9
задан Andrew McIntosh 7 July 2011 в 02:05
поделиться