[Openmcl-devel] Is it safe to make hash tables with non-standard tests?
kpreid at switchb.org
Mon Jul 15 02:29:59 UTC 2013
On Jul 14, 2013, at 18:02, Ron Garret <ron at flownet.com> wrote:
> EQUALP doesn't do the Right Thing with symbols:
> ? (equalp 'foo "FOO")
> ? (string= 'foo "FOO")
If you want to make use of that equality, then it is in principle unsafe to use SXHASH as the hash function, because there is no guarantee (as far as I see in CLHS) that (= (sxhash 'foo) (sxhash "FOO")); therefore such a hash table may be inconsistent.
Given that you aren't looking for portability, this is not a serious problem (assuming CCL does have this equality), but I think it's worth noting the dependence on that.
> On Jul 14, 2013, at 4:49 PM, Tom Emerson wrote:
>> On Sun, Jul 14, 2013 at 3:53 PM, Ron Garret <ron at flownet.com> wrote:
>> I need a string= hash table, which is not in the standard. It appears that CCL can actually make one:
>> (make-hash-table :test 'string= :hash-function 'sxhash)
>> This seems to do the Right Thing, but it's not documented. Is it safe to use this feature?
Kevin Reid <http://switchb.org/kpreid/>
More information about the Openmcl-devel