(sxhash-recurse (x &optional (depthoid +max-hash-depthoid+))
(declare (type index depthoid))
(typecase x
- (list
+ (cons
(if (plusp depthoid)
(mix (sxhash-recurse (car x) (1- depthoid))
(sxhash-recurse (cdr x) (1- depthoid)))
(logxor 422371266
(sxhash ; through DEFTRANSFORM
(class-name (layout-class (%instance-layout x)))))
- ;; Nice though it might be to return a nontrivial
- ;; hash value for other instances (especially
- ;; STANDARD-OBJECTs) there seems to be no good way
- ;; to do so. We can't even do the CLASS-NAME trick
- ;; (as used above for STRUCTURE-OBJECT) because
- ;; then CHANGE-CLASS would cause SXHASH values to
- ;; change, ouch! -- WHN recording wisdom of CSR
- 309518995))
+ (sxhash-instance x)))
(symbol (sxhash x)) ; through DEFTRANSFORM
(array
(typecase x
(sxhash (char-code x)))) ; through DEFTRANSFORM
;; general, inefficient case of NUMBER
(number (sxhash-number x))
+ (generic-function (sxhash-instance x))
(t 42))))
(sxhash-recurse x)))
\f
(array (array-psxhash key depthoid))
(hash-table (hash-table-psxhash key))
(structure-object (structure-object-psxhash key depthoid))
- (list (list-psxhash key depthoid))
+ (cons (list-psxhash key depthoid))
(number (number-psxhash key))
(character (sxhash (char-upcase key)))
(t (sxhash key))))