+(defmacro hash-array-using (recurse array depthoid)
+ ;; Any other array can be hashed by working with its underlying
+ ;; one-dimensional physical representation. Used by both SXHASH and
+ ;; PSXHASH.
+ (once-only ((array array) (depthoid depthoid))
+ `(let ((result 60828123))
+ (declare (type fixnum result))
+ (dotimes (i (min ,depthoid (array-rank ,array)))
+ (mixf result (array-dimension ,array i)))
+ (dotimes (i (min ,depthoid (array-total-size ,array)))
+ (mixf result
+ (,recurse (row-major-aref ,array i) (- ,depthoid 1 i))))
+ result)))
+