Tôi muốn sử dụng các đối tượng Common Lisp CLOS làm các khóa trong một hashtable. Tôi nghĩ nó sẽ đơn giản như thế này:Sử dụng các đối tượng chung của Lisp CLOS làm khóa trong một hashtable?
(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=))
Kiểm tra Lisp Hyperspec thông thường, có vẻ như tôi chỉ có thể sử dụng eq, eql, bằng hoặc ngang nhau để kiểm tra bình đẳng.
Có cách nào để tôi có thể thực hiện việc này không? Hay đây chỉ là một điều thực sự khó khăn để làm, và đó là lý do tại sao tiêu chuẩn không cho phép điều đó?
Genhash là, nếu không có gì khác, khá ổn định (và được goverened bởi CDR). – Vatine