Hi, I always assumed that (make-hash-table eq?) would create a hash table usable with arbitrary chicken objects as keys.
That is especially structures like objects created via define-record should be valid as keys. That is: referencing the table using the very same object (comparing eq? to the key object of the insert operation) will succeed. However this fails for me. At least after the key object was mutated between insert and reference time. See attached test case. Am I trying something illegal here? Thanks /Jörg
(use srfi-69) (define objtbl (make-hash-table eq?)) (define (register! obj arg) (hash-table-update! objtbl obj identity (lambda () (list obj arg)))) (assert (eq? (register! 1 1) (register! 1 2))) (define-record foo bar) (define o1 (make-foo (list 23))) (define r1 (register! o1 1)) (assert (eq? r1 (register! o1 2))) (assert (eq? r1 (register! o1 3))) (foo-bar-set! o1 (list 42)) (assert (eq? r1 (register! o1 4)))
_______________________________________________ Chicken-users mailing list Chicken-users@nongnu.org https://lists.nongnu.org/mailman/listinfo/chicken-users