Clojure 向量具有一个不常见的属性,即当您比较它们时,向量的长度会在任何其他属性之前被考虑。例如在 Haskell
Prelude> [1, 3] > [1, 2, 3]
True
和红宝石
1.9.3p392 :003 > [1, 3] <=> [1, 2, 3]
=> 1
但是在 Clojure 中:
user=> (compare [1, 3] [1, 2, 3])
-1
现在您可以自己实现“常规”比较:
(defn vector-compare [[value1 & rest1] [value2 & rest2]]
(let [result (compare value1 value2)]
(cond
(not (= result 0)) result
(nil? value1) 0 ; value2 will be nil as well
:else (recur rest1 rest2))))
但我希望这种比较向量的方式非常普遍,以至于有一种标准的方式来实现这一点。有没有?