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))))
しかし、ベクトルを比較するこの方法は非常に一般的であるため、これを達成するための標準的な方法があると思います。ある?