(defn
hash-ordered-coll
"Returns the hash code, consistent with =, for an external ordered\n collection implementing Iterable.\n See http://clojure.org/data_structures#hash for full algorithms."
[coll]
(loop
[n 0 hash-code 1 coll (seq coll)]
(if-not
(nil? coll)
(recur
(inc n)
(bit-or (+ (imul 31 hash-code) (hash (first coll))) 0)
(next coll))
(mix-collection-hash hash-code n))))