clojure.data/diff uses set union on key seqs

Description

clojure.data/diff, on line 118, defines:

Since keys returns a key seq, this seems like an error. clojure.set/union has strange and inconsistent behavior with regard to non-sets, and in this case the two key seqs are concatenated. Based on a cursory benchmark, it seems that this bug is a slight performance gain when the maps have no common keys, and a significant performance loss when the maps have the same keys. The results are still correct because of the merging reduce in diff-associative.

The patch is easy (just call set on each key seq).

Environment

None

Assignee

Unassigned

Reporter

Tom Jack

Approval

None

Patch

Code

Priority

Minor
Configure