# [plt-scheme] Immutable mappings on symbols

Carl Eastlund wrote:
>* It seems to me the eq-hash-order and equal-hash-order units would
*>* provide only approximate orderings, because different items can
*>* (rarely) be given the same hash code by (eq-hash-code ...) and
*>* (equal-hash-code ...). Is this the case?
*
Yes.
>* Or does the set unit do
*>* something intelligent in the rare case that equality can be tested
*>* where less-than cannot?
*
From ordered.scm:
(define eq-hash-order@ (predicates->ordered eq?
(lambda (x y) (< (eq-hash-code x) (eq-hash-code y)))
(lambda (x y) (or (eq? x y)
(< (eq-hash-code x) (eq-hash-code y))))))
(define equal-hash-order@ (predicates->ordered equal?
(lambda (x y) (< (equal-hash-code x) (equal-hash-code y)))
(lambda (x y) (or (equal? x y)
(< (equal-hash-code x) (equal-hash-code y))))))
--
Jens Axel Søgaard