3

Steve Loshは、次のClojureスニペットを投稿 しました。

; Integers and Longs are equal.
(= (Integer. 1) (Long. 1))
true

; Even negative ones.
(= (Integer. -1) (Long. -1))
true

; When you use them as keys in maps, the maps are still equal.
(= {(Integer. 1) :foo} {(Long. 1) :foo})
true

(= {(Integer. -1) :foo} {(Long. -1) :foo})
true

; When you use positive numbers as keys to sets, they're also equal.
(= #{(Integer. 1)} #{(Long. 1)})
true

; But negative ones aren't. But only in sets. Maps are fine. lol.
(= #{(Integer. -1)} #{(Long. -1)})
false

この動作の理由は何ですか?それは欠陥と見なされますか、それとも「正式な論理」/集合論の理由があり、永続的な集合で(Integer. -1)等しくないのですか?(Long. -1)

4

1 に答える 1

8

これは Clojure のバグです: http://dev.clojure.org/jira/browse/CLJ-1106

スタック オーバーフローの愚かな文字制限を満たすテキストがここに入る

于 2012-11-09T17:06:18.300 に答える