OpenAxiom's choice is perfectly rational as far as I can tell.
The only issue would be that Aldor hashing would not equal Spad hashing.
I do not know where hashing is used at the Spad level.

Spad domains are stored in $ConstructorCache, once they are created.
In a newly started session do:

)lisp (gethash '|Fraction| |$ConstructorCache|)   ==> nil

then do

a:=1/2
)lisp (gethash '|Fraction| |$ConstructorCache|) ==> ((((|Integer|)) 2 . #<vector 08beb9f4>))

So spad domains are hashed internally.

I recommend that we follow OpenAxiom's lead on this provided nothing breaks.

Tim


Bill Page wrote:
Tim,

Besides the fact that from the standard we only have that

  (equal x y) implies (= (sxhash x) (sxhash y)).

Do you see any reason why SXHASH is not used by default in SetCategory?

Note: OpenAxiom currently defines this default:

  add
      hash(s : %):  SingleInteger == SXHASH(s)$Lisp

Regards,
Bill Page.

On Mon, Nov 9, 2009 at 7:51 PM, Tim Daly <[email protected]> wrote:
...
There is a lisp function to get the hash value of any object
call sxhash. You can call it.

SXHASH(a)$Lisp

Note that if

c:=Integer

then
EQ(a,c)$Lisp is false
SXHASH(a)$Lisp is not equal to SXHASH(c)$Lisp

Thus the hash function you seek already exists.
You just have to accept the fact that Spad is only syntactic
sugar for lisp code and lisp is not evil.




_______________________________________________
Axiom-developer mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/axiom-developer

Reply via email to