user=> (case -1 -1 true false) true user=> (case [-1] [-1] true false) true user=> (case (int -1) -1 true false) true user=> (case [(int 1)] [1] true false) true user=> (case [(int -1)] [-1] true false) false
最后一个案例应该返回 true,就像其他案例一样,
触发此问题的现实生活示例
(case [">" (compare 2 3)] [">" -1] true false) ;; false?
说明:这是由于 case
在哈希比较时使用 hashCode
而不是 hashEq
(当未包裹在向量中时,比较是直接的)以及负整数和负长整型哈希不同,而正整数哈希相同所导致的。
建议:让 case
使用 hasheq 而不是 hashCode
补丁:0001-switch-to-hasheq-for-case.patch