Hash 在公共Lisp中获取任何类型对象的哈希

Hash 在公共Lisp中获取任何类型对象的哈希,hash,lisp,common-lisp,Hash,Lisp,Common Lisp,我试图在CommonLisp中实现一些数据结构(比如HAMP哈希数组映射trie),我需要得到32位或64位的对象哈希,我想将它们存储在这些数据结构中 我知道我可以将对象放入公共Lisp哈希表(使用(make hash table))中,但是我找不到一种方法来获取对象的哈希,比如Java的hashCode或Python的hash。Common Lisp有这样的功能吗?如果没有,CL的标准哈希表如何从任意类型的对象生成哈希?函数sxhash为其参数返回哈希。详情: 伟大的谢谢它看起来像是在我的64

我试图在CommonLisp中实现一些数据结构(比如HAMP哈希数组映射trie),我需要得到32位或64位的对象哈希,我想将它们存储在这些数据结构中


我知道我可以将对象放入公共Lisp哈希表(使用
(make hash table)
)中,但是我找不到一种方法来获取对象的哈希,比如Java的
hashCode
或Python的
hash
。Common Lisp有这样的功能吗?如果没有,CL的标准哈希表如何从任意类型的对象生成哈希?

函数
sxhash
为其参数返回哈希。详情:


伟大的谢谢它看起来像是在我的64位SBCL系统上生成62位哈希的
sxhash
。标准将
sxhash
的返回值定义为非负fixnum。一个好的实现可能会利用is拥有的所有非负fixNum。
* (sxhash 'fred)
4287909749829334992
* (sxhash 'joe)
23906557261513707
* (sxhash 'fred)
4287909749829334992