From: Christophe R. <cs...@ca...> - 2009-05-17 20:47:47
|
Nikodemus Siivola <nik...@ra...> writes: > Supporting a :HASH-FUNCTION argument for MAKE-HASH-TABLE test is also > possible, but not as nice, I feel: it's never going to play as well > with HASH-TABLE-TEST, and makes usage more error prone, requiring > getting two connected pieces right every time you want to make a hash > table, as opposed to defining the connection for once and for all. I haven't been following this discussion, but I'm afraid I think this is exactly backwards, and I don't think there is a "once and for all". I don't see why, even within a single application (because your example using '= clearly falls foul of the locked packages), a single hash function need suit all uses of a single equality predicate; particular hash tables might be used with sufficiently different distributions of keys that distinct hashing functions would be a win. More generally, I can implement your scheme (coupled equality/hash) on top of independent equality and hash functions transparently and with ease. The reverse, while possible is going to be terribly icky: defining a new synonym for an equality function to get hold of a new hash. I wouldn't mind an uncoupled scheme with a default for a given equality, though. Would that be sufficiently easy to use for you while remaining sufficiently general for me? Best, Christophe |