【发布时间】:2013-03-30 09:17:36
【问题描述】:
Clojure 向量有一个不常见的属性,当您比较它们时,向量的长度会在任何其他属性之前被考虑。在例如哈斯克尔
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))))
但我希望这种比较向量的方式非常普遍,以至于有一种标准方法可以实现这一点。有吗?
【问题讨论】: