This page is part of the web mail archives of SRFI 69 from before July 7th, 2015. The new archives for SRFI 69 contain all messages, not just those from before July 7th, 2015.
SRFI-69 proposes the following hash procedures hash consistent with equal? string-hash consistent with string=? string-ci-hash consistent with string-ci=? symbol-hash consistent with eq? on symbols only These names seem to have been chosen to highlight the name of the type of object being hashed. Better would be a naming convention that makes explicit the link between the hash procedure and the comparison procedure (after all there are many application-specific ways to define the equality of two values of a given type). I would suggest the following (taken from Gambit): SRFI-69 equal?-hash hash eqv?-hash no equivalent eq?-hash no equivalent, but subsumes symbol-hash string=?-hash string-hash string-ci?-hash string-ci-hash This consistent naming scheme reduces the programmer's "intellectual clutter". I suggest dropping the symbol-hash procedure, for the more general eq?-hash procedure. Moreover, eqv?-hash can be used when the keys are numeric (re: make-integer-hash-table). I also suggest adding the constraint that hashing a string x with string=?-hash and a symbol y with equal?-hash, eqv?-hash, or eq?-hash, must yield the same hash number when (string=? x (symbol->string y)). This is useful when dealing with textual data in a mixed string/symbol representation, that is you need to use something like the following key comparison procedure (define (text-equal? x y) (string=? (if (string? x) x (symbol->string x)) (if (string? y) y (symbol->string y)))) then you can still use the default equal?-hash. Marc